KMeans
- n_clusters: 即k值,一般需要多试一些值以获得较好的聚类效果。
- max_iter: 最大的迭代次数,一般如果是凸数据集的话可以不管这个值,如果数据集不是凸的,可能很难收敛,此时可以指定最大的迭代次数让算法可以及时退出循环。
- n_init:用不同的初始化质心运行算法的次数。由于K-Means是结果受初始值影响的局部最优的迭代算法,因此需要多跑几次以选择一个较好的聚类效果,默认是10。如果k值较大,则可以适当增大这个值。
- init: 即初始值选择的方式,可以为完全随机选择’random’,优化过的’k-means++‘或者自己指定初始化的k个质心。一般建议使用默认的’k-means++’。
- algorithm:有“auto”, “full” or “elkan”三种选择。
- “full”就是传统的K-Means算法
- “elkan”是elkan K-Means算法
- 默认"auto"则会根据数据值是否稀疏,来决定选择"full"和“elkan”。一般数据是稠密的,那么就是 “elkan”,否则就是"full"。
MiniBatchKMeans
无放回随机采样
- n_init:MiniBatchKMeans类的n_init是每次用不一样的采样数据集来跑不同的初始化质心运行算法。
- batch_size:即用来跑Mini Batch KMeans算法的采样集的大小,默认是100。如果发现数据集的类别较多或者噪音点较多,需要增加这个值以达到较好的聚类效果。
- init_size: 用来做质心初始值候选的样本个数,默认是batch_size的3倍,一般用默认值就可以。
- reassignment_ratio: 某个类别质心被重新赋值的最大次数比例。这个比例是占样本总数的比例,乘以样本总数就得到了每个类别质心可以重新赋值的次数。如果取值较高的话算法收敛时间可能会增加。默认是0.01。如果数据量不是超大的话,比如1w以下,建议使用默认值。
- max_no_improvement:即连续多少个Mini Batch没有改善聚类效果,就停止算法,和reassignment_ratio, max_iter一样是为了控制算法运行时间。默认是10。
K值的评估标准
轮廓系数
- metrics.calinski_harabasz_score
- 得到的Calinski-Harabasz分数值𝑠越大则聚类效果越好: s ( k ) = t r ( B k ) t r ( W k ) m − k k − 1 s(k) = \frac{tr(B_k)}{tr(W_k)} \frac{m-k}{k-1} s(k)=tr(Wk)tr(Bk)k−1m−k其中m为训练集样本数,k为类别数。 B k B_k Bk为类别之间的协方差矩阵, W k W_k Wk为类别内部数据的协方差矩阵。𝑡𝑟为矩阵的迹。