本文简要介绍python语言中 sklearn.cluster.KMeans
的用法。
用法:
class sklearn.cluster.KMeans(n_clusters=8, *, init='k-means++', n_init=10, max_iter=300, tol=0.0001, verbose=0, random_state=None, copy_x=True, algorithm='auto')
K-Means 聚类。
在用户指南中阅读更多信息。
- n_clusters:整数,默认=8
要形成的簇数以及要生成的质心数。
- init:{‘k-means++’, ‘random’},可调用或类似数组的形状 (n_clusters, n_features),默认=‘k-means++’
初始化方法:
‘k-means++’:以智能方式为k-mean聚类选择初始聚类中心以加速收敛。有关更多详细信息,请参阅 k_init 中的注释部分。
‘random’:从初始质心的数据中随机选择
n_clusters
观测值(行)。如果传递了一个数组,它的形状应该是 (n_clusters, n_features) 并给出初始中心。
如果传递了一个可调用对象,它应该接受参数 X、n_clusters 和一个随机状态并返回一个初始化。
- n_init:整数,默认=10
k-means 算法将使用不同的质心种子运行的次数。就惯性而言,最终结果将是 n_init 连续运行的最佳输出。
- max_iter:整数,默认=300
k-means 算法单次运行的最大迭代次数。
- tol:浮点数,默认=1e-4
关于两次连续迭代的聚类中心差异的 Frobenius 范数的相对容差,以声明收敛。
- verbose:整数,默认=0
详细模式。
- random_state:int、RandomState 实例或无,默认=无
确定质心初始化的随机数生成。使用int 使随机性具有确定性。请参阅术语表。
- copy_x:布尔,默认=真
在预先计算距离时,首先将数据居中在数值上更准确。如果 copy_x 为 True(默认),则不修改原始数据。如果为 False,则修改原始数据,并在函数返回之前放回,但通过减去再添加数据均值可能会引入小的数值差异。请注意,如果原始数据不是C-contiguous,即使copy_x 为False,也会进行复制。如果原始数据是稀疏的,但不是 CSR 格式,即使 copy_x 为 False,也会进行复制。
- algorithm:{“auto”, “full”, “elkan”},默认=”auto”
K-means 算法使用。经典的EM-style算法是“full”。通过使用三角不等式,“elkan” 变体对具有明确定义的集群的数据更有效。然而,由于分配了一个额外的形状数组(n_samples,n_clusters),它更加占用内存。
目前“auto”(为了向后兼容而保留)选择“elkan”,但它可能会在未来改变以获得更好的启发式。
- cluster_centers_:ndarray 形状(n_clusters,n_features)
聚类中心的坐标。如果算法在完全收敛之前停止(参见
tol
和max_iter
),这些将与labels_
不一致。- labels_:ndarray 形状 (n_samples,)
每个点的标签
- inertia_:浮点数
样本到它们最近的聚类中心的距离平方和,如果提供,则按样本权重加权。
- n_iter_:int
运行的迭代次数。
- n_features_in_:int
拟合期间看到的特征数。
- feature_names_in_:ndarray 形状(
n_features_in_
,) 拟合期间看到的特征名称。仅当
X
具有全为字符串的函数名称时才定义。
参数:
属性:
注意:
k-means 问题使用 Lloyd 或 Elkan 算法解决。
平均复杂度由 O(k n T) 给出,其中 n 是样本数,T 是迭代次数。
最坏情况复杂度由 O(n^(k+2/p)) 给出,其中 n = n_samples,p = n_features。 (D. Arthur 和 S. Vassilvitskii,“k-means 方法有多慢?” SoCG2006)
在实践中,k-means 算法非常快(可用的最快的聚类算法之一),但它属于局部最小值。这就是为什么重新启动它几次会很有用。
如果算法在完全收敛之前停止(因为
tol
或max_iter
),labels_
和cluster_centers_
将不一致,即cluster_centers_
将不是每个集群中点的均值。此外,估计器将在最后一次迭代后重新分配labels_
,以使labels_
与训练集上的predict
一致。例子:
>>> from sklearn.cluster import KMeans >>> import numpy as np >>> X = np.array([[1, 2], [1, 4], [1, 0], ... [10, 2], [10, 4], [10, 0]]) >>> kmeans = KMeans(n_clusters=2, random_state=0).fit(X) >>> kmeans.labels_ array([1, 1, 1, 0, 0, 0], dtype=int32) >>> kmeans.predict([[0, 0], [12, 3]]) array([1, 0], dtype=int32) >>> kmeans.cluster_centers_ array([[10., 2.], [ 1., 2.]])
相关用法
- Python sklearn KBinsDiscretizer用法及代码示例
- Python sklearn KNeighborsTransformer用法及代码示例
- Python sklearn KNeighborsRegressor用法及代码示例
- Python sklearn KNeighborsRegressor.kneighbors用法及代码示例
- Python sklearn KDTree用法及代码示例
- Python sklearn KNeighborsClassifier.kneighbors用法及代码示例
- Python sklearn KNeighborsClassifier用法及代码示例
- Python sklearn KernelPCA用法及代码示例
- Python sklearn KernelDensity用法及代码示例
- Python sklearn KernelRidge用法及代码示例
- Python sklearn KNeighborsRegressor.kneighbors_graph用法及代码示例
- Python sklearn KNeighborsClassifier.kneighbors_graph用法及代码示例
- Python sklearn KNNImputer用法及代码示例
- Python sklearn KNeighborsTransformer.kneighbors_graph用法及代码示例
- Python sklearn KernelCenterer用法及代码示例
- Python sklearn KFold用法及代码示例
- Python sklearn KNeighborsTransformer.kneighbors用法及代码示例
- Python sklearn jaccard_score用法及代码示例
- Python sklearn WhiteKernel用法及代码示例
- Python sklearn CalibrationDisplay.from_predictions用法及代码示例
- Python sklearn VotingRegressor用法及代码示例
- Python sklearn gen_batches用法及代码示例
- Python sklearn ExpSineSquared用法及代码示例
- Python sklearn MDS用法及代码示例
- Python sklearn adjusted_rand_score用法及代码示例
注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.cluster.KMeans。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。