K均值#
- sklearn.cluster.k_means(X, n_clusters, *, sample_weight=None, init='k-means++', n_init='auto', max_iter=300, verbose=False, tol=0.0001, random_state=None, copy_x=True, algorithm='lloyd', return_n_iter=False)[source]#
- 执行K均值聚类算法。 - 更多信息请阅读用户指南。 - 参数:
- X形状为 (n_samples, n_features) 的 {array-like, sparse matrix}
- 要聚类的观测值。需要注意的是,数据将被转换为C顺序,如果给定的数据不是C连续的,这将导致内存复制。 
- n_clustersint
- 要形成的聚类数量以及要生成的质心数量。 
- sample_weight形状为 (n_samples,) 的 array-like,默认为 None
- X中每个观测值的权重。如果为- None,则所有观测值都被赋予相同的权重。如果- init是可调用对象或用户提供的数组,则在初始化期间不使用- sample_weight。
- init{'k-means++', 'random'},可调用对象或形状为 (n_clusters, n_features) 的 array-like,默认为 'k-means++'
- 初始化方法 - 'k-means++':以一种巧妙的方式选择k均值聚类的初始聚类中心,以加快收敛速度。更多详情请参见k_init中的注释部分。
- 'random':从数据中随机选择- n_clusters个观测值(行)作为初始质心。
- 如果传入数组,则其形状应为 - (n_clusters, n_features),并给出初始中心。
- 如果传入可调用对象,则它应该接受参数 - X、- n_clusters和随机状态,并返回一个初始化。
 
- n_init'auto' 或 int,默认为 “auto”
- 使用不同的质心种子运行k均值算法的次数。最终结果将是n_init次连续运行中就惯性而言的最佳输出。 - 当 - n_init='auto'时,运行次数取决于init的值:如果使用- init='random'或- init是可调用对象,则为10;如果使用- init='k-means++'或- init是类似数组的对象,则为1。- 1.2版本新增:为 - n_init添加了'auto'选项。- 1.4版本变更: - n_init的默认值更改为- 'auto'。
- max_iterint,默认为 300
- 要运行的k均值算法的最大迭代次数。 
- verbosebool,默认为 False
- 详细模式。 
- tolfloat,默认为 1e-4
- 关于两次连续迭代的聚类中心差异的Frobenius范数的相对容差,用于声明收敛。 
- random_stateint,RandomState 实例或 None,默认为 None
- 确定质心初始化的随机数生成。使用整数使随机性确定性。参见词汇表。 
- copy_xbool,默认为 True
- 预计算距离时,首先对数据进行居中处理更精确。如果 - copy_x为True(默认值),则原始数据不会被修改。如果为False,则原始数据会被修改,并在函数返回之前放回,但可能会引入小的数值差异。请注意,如果原始数据不是C连续的,即使- copy_x为False,也会进行复制。如果原始数据是稀疏的,但不是CSR格式,即使- copy_x为False,也会进行复制。
- algorithm{'lloyd', 'elkan'},默认为 'lloyd'
- 要使用的K均值算法。经典的EM风格算法是 - "lloyd"。- "elkan"变体可以通过使用三角不等式在一些具有明确定义的聚类的dataset上更高效。但是,由于分配了一个形状为- (n_samples, n_clusters)的额外数组,它更占用内存。- 0.18版本变更:添加了Elkan算法 - 1.1版本变更:将“full”重命名为“lloyd”,并弃用“auto”和“full”。将“auto”更改为使用“lloyd”而不是“elkan”。 
- return_n_iter布尔值,默认为False
- 是否返回迭代次数。 
 
- 返回:
- centroid形状为 (n_clusters, n_features) 的ndarray
- k-means算法最后一次迭代找到的质心。 
- label形状为 (n_samples,) 的ndarray
- label[i]表示第 i 个观测值距离最近的质心的代码或索引。
- inertia浮点数
- 惯性准则的最终值(训练集中所有观测值到最近质心的平方距离之和)。 
- best_n_iter整数
- 对应最佳结果的迭代次数。仅当 - return_n_iter设置为 True 时返回。
 
 - 示例 - >>> import numpy as np >>> from sklearn.cluster import k_means >>> X = np.array([[1, 2], [1, 4], [1, 0], ... [10, 2], [10, 4], [10, 0]]) >>> centroid, label, inertia = k_means( ... X, n_clusters=2, n_init="auto", random_state=0 ... ) >>> centroid array([[10., 2.], [ 1., 2.]]) >>> label array([1, 1, 1, 0, 0, 0], dtype=int32) >>> inertia 16.0 
