k-means步骤
- 随机设置k个特征空间内的点作为初始的聚类中心
- 对于其它每个点计算到k个中心的距离,未知的点最近的一个聚类中心点作为标记类别
- 接着对着标记的类中心之后,重新计算出每个聚类的新中心点(平均值)
- 如果计算得出的新中心点与原中心点一样,那么结束,否则重新进行第二步过程
k-means API:sklearn.cluster.KMeans
class sklearn.cluster.
KMeans
(n_clusters=8, init=’k-means++’, n_init=10, max_iter=300, tol=0.0001, precompute_distances=’auto’, verbose=0, random_state=None, copy_x=True, n_jobs=None, algorithm=’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 ”表示稀疏数据。
- 使用k -means算法。经典的em风格的算法是“满的”。通过使用三角形不等式,“
属性
- 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总结
特点分析:
采用迭代式算法,直观易懂且非常实用
缺点:容易收敛到局部最优解(多次聚类)
注意:聚类一般做在分类之前