k-means步骤

  1. 随机设置k个特征空间内的点作为初始的聚类中心
  2. 对于其它每个点计算到k个中心的距离,未知的点最近的一个聚类中心点作为标记类别
  3. 接着对着标记的类中心之后,重新计算出每个聚类的新中心点(平均值)
  4. 如果计算得出的新中心点与原中心点一样,那么结束,否则重新进行第二步过程

k-means API:sklearn.cluster.KMeans

点此查看官方文档API

class sklearn.cluster.KMeans(n_clusters=8init=’k-means++’n_init=10max_iter=300tol=0.0001precompute_distances=’auto’verbose=0random_state=Nonecopy_x=Truen_jobs=Nonealgorithm=’auto’)

参数

  • n_clusters : int, optional, default: 8
    • 要生成的聚类数量
  • init : {‘k-means++’, ‘random’ or an ndarray}
    • 初始化方法,默认k-means++
    • k-means++:智能选择初始聚类中心进行k均值聚类,加快收敛速度。
    • random: 从初始中心体的数据中随机选择k个观测值(行)。
  • n_init : int, default: 10
    • k-means算法在不同质心种子下运行的时间。根据惯性,最终的结果将是n_init连续运行的最佳输出。
  • max_iter : int, default: 300
    • 一次运行的k-均值算法的最大迭代次数。
  • tol : float, default: 1e-4
    • 相对公差与惯性宣布收敛
  • precompute_distances : {‘auto’, True, False}
    • 预先计算距离(更快但占用更多内存)。
  • verbose : int, default 0
    • 冗长的模式。
  • random_state : int, RandomState instance or None (default)
    • 确定质心初始化的随机数生成。使用整数使随机性具有确定性。
  • copy_x : boolean, optional
    • 当预计算距离时,首先对数据进行中心处理在数值上更精确。如果copy_x为True(默认值),则不修改原始数据,确保X是c连续的。如果为False,则在函数返回前修改原始数据,并将其放回,但可能会通过减去然后加上数据的平均值来引入较小的数值差异,在这种情况下也不能保证数据是c连续的,这可能会导致显著的减速。
  • n_jobs : int or None, optional (default=None)
    • 用于计算的作业数。这是通过计算并行运行的每个n_init来实现的。
  • algorithm : “auto”, “full” or “elkan”, default=”auto”
    • 使用k -means算法。经典的em风格的算法是“满的”。通过使用三角形不等式,“elkan”变量的效率更高,但目前不支持稀疏数据。“auto”选择“elkan”表示密集数据,“full”表示稀疏数据。

属性

  • cluster_centers_ : array, [n_clusters, n_features]
    • 星系团中心的坐标。如果算法在完全收敛之前停止(参见tol和max_iter),这些将与labels_不一致。
  • labels_ :
    • 每个点的标签
  • inertia_ : float
    • 样本到其最近聚类中心距离的平方和。
  • n_iter_ : int
    • 运行的迭代次数。

方法

fit(X[, y, sample_weight])
计算k – means聚类。
fit_predict(X[, y, sample_weight])
计算聚类中心并预测每个样本的聚类指数。
fit_transform(X[, y, sample_weight])
计算聚类并将X转换为簇距空间。
get_params([deep])
获取此估计器的参数。
predict(X[, sample_weight])
预测X中每个样本所属的最近聚类。
score(X[, y, sample_weight])
与k -均值物镜上的X值相反。
set_params(**params)
设置此估计器的参数。
transform(X)
X变换成簇距空间。

Kmeans性能评估指标

轮廓系数:

Kmeans性能评估指标API:sklearn.metrics.silhouette_score

Kmeans总结

特点分析:

采用迭代式算法,直观易懂且非常实用

缺点:容易收敛到局部最优解(多次聚类)

注意:聚类一般做在分类之前

k-means案例:k-means对Instacart Market用户聚类

发表回复