K-means聚类算法

目的

简述如何使用scikit-learnK-均值(K-means)聚类算法。

简介

K-均值聚类算法属于无监督学习,K指的是用户指定要创建的聚类(cluster)的数目。

聚类和分类最大的区别在于分类的目标已知,而聚类的目标未知,没有预先定义,聚类也被称为无监督分类(unsupervised classification)。

这里使用mglearn进行数据展示,该模块是基于matplotlib进行封装的,可以使用pip进行安装。

1
$ pip install mglearn

内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import mglearn as mglearn
# 准备数据
X, y = make_blobs(random_state=1)
# 构建聚类模型,设置k值为3
kmeans = KMeans(n_clusters=3)
# 将数据放入模型中
kmeans.fit(X)
# 输出分类后的标记结果
print("标记分类结果:\n{}".format(kmeans.labels_))
# 使用散点图展示数据结果
mglearn.discrete_scatter(X[:, 0], X[:, 1], kmeans.labels_, markers='o')
# 显示聚类结果中心点
mglearn.discrete_scatter(
kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], [0, 1, 2],
markers='^', markeredgewidth=2)
# 根据当前模型来预测未知测试数据
# print(kmeans.predict(X_test))

参考资料
K-means
mglearn homepage