文章目录
- sklearn版本
- sklearn.KMeans使用实例
- 实例1 Iris,鸢尾花数据集(UC Irvine Machine Learning Repository)
- 实例2 RandomData,在二维坐标轴排列成一条直线的随机数据
- sklearn.KMeans解析
- KMeans类
- 构造函数__init__(),调用格式iris_kmeans = KMeans(n_clusters=3)
- iris_kmeans.fit(X)
- _kmeans_single_elkan(X,tol= self.tol,random_state=seed)
- elkan_iter(X,centers,centers_new,labels,center_shift,update_centers=True/False)
- predict(X)
- 参考
sklearn版本
- scikit-learn 0.23.2
sklearn.KMeans使用实例
-
实例1 Iris,鸢尾花数据集(UC Irvine Machine Learning Repository)
Iris可以从sklearn
包内部导入,常常用作分类的训练数据集。这里为了方便展示聚类效果(二维在平面图中效果明显),选取Iris的前两个维度作为聚类依据。代码参见Iris_KMeans.py。左图为全部数据点,右图为KMeans聚类(n_cluseters=3
,Iris数据集本就采集自3种鸢尾花)结果,不同颜色代表不同簇。
-
实例2 RandomData,在二维坐标轴排列成一条直线的随机数据
这一个例子主要展现不同簇数量(n_cluseters
)对聚类效果的影响。为此首先用make_blobs
生成属于4个簇的随机点,最后用Calinski-Harabasz Index评估方式为不同簇数量的聚类打分,代码参见RandomData_KMeans.py。最左图为全部数据点。剩余三张图分别为簇数量为3、4、5的KMeans聚类结果。显然n_cluseters=4
时效果是最好的。
sklearn.KMeans解析
sklearn
中包括KMeans和MiniBatchKMeans两种k-means聚类,后者对大规模数据集进行采样后执行k-means,避免计算量过大。本节分析sklearn.KMeans
中的主要函数。