当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn KMeans用法及代码示例


本文简要介绍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_stateint、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)

聚类中心的坐标。如果算法在完全收敛之前停止(参见 tolmax_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 算法非常快(可用的最快的聚类算法之一),但它属于局部最小值。这就是为什么重新启动它几次会很有用。

如果算法在完全收敛之前停止(因为 tolmax_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.]])

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.cluster.KMeans。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。