class sklearn.cluster.
KMeans
(n_clusters=8, *, init='kmeans++', n_init=10, max_iter=300, tol=0.0001,
precompute_distances='deprecated', verbose=0, random_state=None, copy_x=True, n_jobs='deprecated', algorithm='auto')
1、 n_clusters: 聚类类别数量,也是初始聚类中心的数量,default=8
2、init: 聚类的初始化中心的方案, dafault='k-means++'
'k-means++': (1)从输入的数据点集合(要求有k个聚类)中随机选择一个点作为第一个聚类中心;(2)、对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x);(3)、选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大;(4)、重复2和3直到k个聚类中心被选出来。
'random': 从data中随机选取n_clusters数量的点作为初始中心;
'ndarray': 传入的是形状为(n_clusters, n_features)的二维数组,数组的每一行作为一个中心;
'callable': 接受的是参数X、n_clusters、random_state,并返回一个初始化值。
3、max_iter: 一次算法运行的最大迭代次数, dafualt=300
4、n_init: 聚类算法的运行次数,输出n_init连续的运行中最好的那次的结果,default=10
5、tol: 两次连续迭代之间的相对误差,取一个很小的值(不建议tol=0,因为又浮点数有舍入误差),float,defualt=1e-4
6、precompute_distances: 是否将数据放入内存进行预计算, default='auto'
'auto': n_sample*n_cluster>=12 million时不进行预计算,它相当于双精度工作100MB的开销
True: 总进行预计算
False: 不进行预计算
7、verbose: 是否输出详细信息,default=0
8、random_state:用于产生初始中心的随机序列,default=None, (用于2、init)
9、copy_x: 是否直接在原矩阵上计算,default=True,copy一份进行计算
10、n_jobs: 同时进行计算的核数(并发数),n_jobs用于并行计算每个n_init,如果设置为None或-1,使用所有CPU,若果设置为1,不并行,如果设置小于-1,使用CPU个数+1+n_jobs个CPU
11、algorithm:用于kmeans第一步距离计算, {“auto”, “full”, “elkan”}, default=”auto”
"full"就是我们传统的K-Means算法;
“elkan”,它的目标是减少不必要的距离的计算,利用了两边之和大于等于第三边,以及两边之差小于第三边的三角形性质,来减少距离的计算,效率更高,但是目前不支持稀疏数据
1、计算任意两个聚类中心的距离;
2、当计算样本点x点应该属于哪个聚类中心时,规律一:当发现2*S(x,K1)S(x,K1),此时我们不需要再计算D(x,j2);
规律二:我们可以得到D(x,j2)≥max{0,D(x,j1)−D(j1,j2)}。
利用上边的两个规律,elkan K-Means比起传统的K-Means迭代速度有很大的提高。但是如果样本的特征是稀疏的,有缺失值的话,这个方法就不适用了,此时某些距离无法计算,则不能使用该算法
默认的"auto"则会根据数据值是否是稀疏的,来决定如何选择"full"和“elkan”。一般数据是稠密的,那么就是 “elkan”,否则就是"full"。一般来说建议直接用默认的"auto"
clusters_center_:簇中心
labels_: 每个样本点的label
inertia_: 样本点到簇中心的平方距离之和
n_iter_:运行的迭代次数
fit(self, X[, y, sample_weight]): 计算k-means聚类,sample_weight=None,默认所有样本点权值相等,返回self拟合值
fit_predict(self, X[, y, sample_weight]): 计算k-means聚类并预测样本所属的cluster,返回labels_ :(n_samples,),样本的label值
fit_transform(self, X[, y, sample_weight]): 计算k-means聚类,并将X转换为cluster-distance space,返回X_new :(n_samples, n_clusters)
get_params(self, deep=True): 返回训练参数
predict(self, X, sample_weight=None): 预测X中样本到最近簇中心的label,返回labels:(n_samples,)
score(self, X, y=None, sample_weight=None): 评估
set_params(self, **params): 设置参数
transform(self, X): 将样本X转换为cluster-distance space,返回X_new :(n_samples, n_clusters)
:)ps 红色部分是不太理解