Sklearn 聚类2025年3月17日 | 阅读11分钟 了解任何事物,例如音乐,的一种方法是寻找重要的分组或集合。虽然我们的朋友可能会按年代排列音乐,但我们可能会按流派排列音乐,我们选择的组有助于理解不同的元素。 什么是聚类?聚类是无监督机器学习技术之一,它是一种在数据集中查找关联和模式的方法。然后根据具有许多相似特征的样本将数据集样本组织成不同的类别。由于它确保了可用未标记数据的自然聚类,因此聚类至关重要。 它被定义为一种根据数据点的相似性将其分类为不同类别的算法。可能相似的对象被保存在一个与其他集群几乎没有相似之处的集群中。 这是通过在未标记数据集中查找相似趋势(例如活动、大小、颜色和形状),然后根据是否存在此类趋势对数据进行分类来完成的。由于该算法是一种无监督学习技术,因此它在未标记数据集上运行并且不受监督。可以使用 Python 的 Scikit-learn 模块中的 sklearn.cluster 方法对未标记数据进行聚类。 既然我们熟悉了聚类,让我们来研究 SkLearn 中可用的各种聚类方法。 Python Scikit-learn 中的聚类方法
K 均值该算法计算不同数据类别的集群质心,然后通过迭代识别最佳质心。它假设给定数据集存在预先已知的集群,因为它需要集群数量作为其参数。这种聚类方法的基本思想是通过将样本分成 n 个具有相同方差的组来聚类所提供的数据,同时减少惯性约束。 k 代表集群的数量。Python Scikit-learn 具有 sklearn.cluster.KMeans 聚类来执行 KMeans 聚类。样本权重参数使 sklearn.cluster 能够计算集群中心和惯性值。KMeans 模块为某些样本提供额外权重。 K 均值聚类算法k 均值聚类算法将 N 个样本集划分为 K 个不相交的集群,每个集群的均值用于表征其样本。尽管它们共享相似的空间,但均值通常被称为集群的“质心”。质心通常不是来自独立特征 X 的点。 K 均值聚类方法的目的是最小化集群内的平方和准则,或惯性。 k 均值聚类方法的算法可以概括为四个重要步骤,可用于根据样本特征的相似性将其聚类到不同的类别中。 从样本位置随机选择 k 个质心作为初始集群中心。 将每个样本点放置在其最近的质心旁边。 将质心放置在分配给集群的样本点中间。 重复步骤 2 和 3,直到达到用户定义的容差水平、最大迭代次数,或者直到观察到集群类别没有变化。 Python Scikit-Learn 聚类 KMeans参数 n_clusters (int, 默认值 = 8):- 这个数字表示要创建的质心数量和要构建的集群数量。 Init ({'k-means++', 'random'}, 形状为 (n_clusters, n_features) 的类数组, 默认值 = 'k-means++'):- 初始化方法。 为了加快收敛速度,"k-means++" 为 k-均值聚类智能选择初始集群中心。 "random" 从数据集中随机选择集群观测值(行)的数量作为初始质心。 n_init (int, 默认值 = 10):- k-均值聚类算法将使用各种质心种子进行的迭代次数。最终分数将是 n_init 连续循环的惯性最小化的最佳结果。 max_iter (int, 默认值 = 300):- 这指定了单次运行中 k-均值聚类算法的最大迭代次数。 tol (float, 默认值 = 1e-4):- 收敛被定义为两次连续迭代的集群中心之间的距离,相对于 Frobenius 范数具有比例容差。 verbose (int, 默认值 = 0):- 详细模式。 random_state (int, RandomState 实例或 None, 默认值 = None):- 此参数确定如何生成质心初始化随机样本。通过使用 int 使随机化具有确定性。 copy_x (bool, 默认值 = True):- 在事先计算距离时,首先对数据进行中心化在定量上更精确。如果 x_copy 设置为 True(默认值),则初始数据不会更改。如果为 False,则在方法退出之前更改并恢复初始数据。 algorithm ({"lloyd", "elkan", "auto", "full"}, 默认值 = "lloyd"):- 指定要使用的 K 均值聚类方法的算法。 代码 输出 ![]() ![]() 肘部法则尽管 k-均值在我们的测试数据集上表现良好,但必须强调的是,它的局限性之一是,我们必须首先定义 k,即集群数量,然后才能确定理想的 k。在实际场景中,要选择的集群数量可能并不总是很明显,特别是当我们处理无法看到的高维数据集时。 肘部技术是一种有用的图形工具,用于确定特定活动的理想集群数量 k。我们可以推断,随着 k 的增长,集群内 SSE(或失真)将减少。这是因为数据将更接近其指定的质心。 代码 输出 ![]() 层次聚类使用自上而下或自下而上的策略从数据中形成集群称为层次聚类。它要么从一个包含数据集中所有样本的单一集群开始,然后将该集群分成更多的集群,要么从多个包含数据集中所有样本的集群开始,然后根据某些度量组合样本以生成具有更多度量的集群。 随着层次聚类的进行,结果可以看作是一个树状图。将“深度”与阈值联系起来有助于我们确定我们想要聚类的深度(何时停止)。 它有 2 种类型 凝聚聚类(自下而上策略): 从数据集的单个样本及其集群开始,我们根据某个标准不断将这些随机创建的集群组合成更突出的集群,直到过程结束时只剩下一个集群。 分裂聚类(自上而下策略): 在这种方法中,我们从一次将整个数据集组合成一个单一集群开始,然后继续将这个集群分解成多个较小的集群,直到每个集群只包含一个样本。 单链接: 通过这种链接方法,我们结合两个成员最相似的集群,使用来自每个集群中最相似的元素对。 全链接: 通过这种链接方法,我们从每个集群中选择最不同的样本,并将它们组合到具有最小相异距离的两个集群中。 平均链接: 在这种链接方法中,我们使用平均距离来配对每个集群中最相似的样本,并将包含最相似成员的两个集群组合成一个新组。 Ward: 这种方法减少了为所有集群对计算的平方距离之和的值。尽管该方法是分层的,但其思想与 KMeans 相同。 请注意,我们基于距离(通常是欧几里得距离)进行相似性比较。 参数n_clusters (int 或 None, 默认值 = 2):- 算法要生成的集群数量。如果距离阈值参数不是 None,则它必须是 None。 affinity (str 或可调用对象, 默认值 = 'euclidean'):- 此参数建议用于链接计算的度量。L1、L2、Euclidean、Cosine、Manhattan 或 Precomputed 都是可能的选项。如果链接方法是 "ward",则只接受 "euclidean"。如果为 "precomputed",则 fit 技术需要邻近矩阵作为输入,而不是相似性矩阵)。 memory (str 或具有 joblib.Memory 接口的对象, 默认值 = None):- 它用于存储树计算的结果。默认情况下不进行缓存。如果提供了字符串,则指定访问缓存目录的路径。 connectivity (类数组或可调用对象, 默认值 = None):- 此参数接受连通性矩阵。 compute_full_tree ('auto' 或 bool, 默认值 = 'auto'):- 在 n_clusters 处,算法停止树的构建。 linkage ({'ward', 'single', 'complete', 'average'}, 默认值 = 'ward'):- 链接准则决定了应该使用哪个度量来计算观测集之间的距离。算法会将使该因子最小化的集群组合成一个集群。 distance_threshold (float, 默认值 = None):- 集群对之间的最大连通距离,超过该距离集群不能合并。如果未提供或为 None,则参数 compute_full_tree 和 n_clusters 都必须为 True。 compute_distances (bool, 默认值 = False):- 即使不使用距离阈值,此参数也会计算集群对之间的距离。可以使用此参数可视化树状图。但是,存在内存和计算开销。 代码 输出 Features of the dataset : ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'] Target feature of the dataset : ['setosa' 'versicolor' 'virginica'] Size of our dataset : (150, 2) (150,) 下一个主题Sklearn 教程 |
在处理与时间相关的任务时,我们始终可以使用 Python 的内置时间模块。由于这个内置模块,有几种方法可以在代码中表示时间,包括数字、字符串和对象。它还具有其他功能,例如获取当前时间、等待...
阅读 3 分钟
?本教程解释了什么是 GUI 以及如何使用 Python 构建 GUI 应用程序。它还展示了如何使用 wxPython 创建 GUI。GUI 应用程序是计算机程序或硬件的图形用户界面。你...
阅读 16 分钟
?在 Python 中,标识符是分配给变量、函数、类或其他对象的名称。这是一种为人可读的名称,并在程序中用于引用该对象。在 Python 中,标识符...
阅读 3 分钟
任意轴上两点之间的欧几里得距离是它们之间的最短距离。换句话说,它是两点之间的位移长度。给定 2 维平面上的两点 A (a, b) 和 B (c, d),A 和 B 之间的欧几里得距离是...
阅读 3 分钟
? cbind 函数是实现此目的最简单的方法之一。cbind 方法(column bind 的缩写)是一个融合函数,它将两个行数相同的不同数据帧组合成一个统一的数据帧。它比它稍微困难一点...
阅读 2 分钟
我们都知道桌面操作系统及其功能和工作原理。我们都听说过的一些最著名的操作系统是 Windows、Linux、macOS 和 ChromeOS。其中,ChromeOS 也是一种基于 Linux 的桌面操作系统,它...
阅读 10 分钟
Python 编程语言为所有类型的项目提供了不同类型的库。同样,Python 拥有各种数据可视化库,以便用户能够非常详细地理解数据集并正确分析它。每个可视化库都有其自身的特点。使用...
阅读 10 分钟
介绍 作为一名数据科学家或软件开发人员,您可能会经常遇到精简困难,这要求以最佳方式将资源分配给任务。其中一个问题就是分配问题,我们应该在其中确定如何最好地将资源分配给活动...
7 分钟阅读
在本文中,我们将讨论如何使用 seaborn 库创建计数图,以及如何使用不同的参数从数据集的特征中推断结果。Seaborn 库 Seaborn 库在数据分析师中广泛使用,提供了各种图表...
阅读 3 分钟
在本教程中,我们将学习如何将人类语言文本转换为类似人类的语音。有时我们更喜欢听内容而不是阅读。我们可以在听关键文件数据时进行多任务处理。Python 提供了许多 API 将文本转换为语音。这个...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India