赞
踩
大家好久不见!之前给大家介绍了分类和聚类的区别、聚类的进一步介绍以及K-means聚类算法,大家看懂了吗?
本期,我们将带领大家动手实践,向大家讲解之前介绍的“K-means”算法如何通过编程实现。
如果您有过Python的编程经验,那么可以动手试试下面的编程实践!
- #Python
- import matplotlib.pyplot as plt # 导入用于绘图的包(这里用的是matplotlib的工具)
- from sklearn.cluster import KMeans # 导入K-means算法的包
- from sklearn import datasets # 导入sklearn自带的数据集
-
- iris = datasets.load_iris() # 下载和导入iris鸢尾花数据集 英文单词iris : 鸢尾属植物
- X = iris.data[:, :4] # 抽取特征空间中的前4个维度
-
- print(X.shape)
- print(X)
X.shape的输出结果:(150, 4)
说明该数据集是有具有4个维度的150行数据
- # 绘制数据分布图
-
- plt.scatter(X[:, 0], X[:, 1], c="red", marker='D', alpha=0.3)
- # plt.scatter()函数的作用是绘制散点图 英文单词scatter : 零星散布的东西
- # “c”指的是color颜色,作用是为散点图上的点设置颜色; 在上面的代码中将散点图的点的颜色设置为红(red)
- # “marker”指的是散点图上的点的形状; 英文单词marker : 标识, 标记
-
- plt.xlabel('sepal length') # 设置横轴名称
- 补充:英文单词sepal : [植]萼片;花萼
- plt.ylabel('sepal width') # 设置纵轴名称
-
- plt.title(label='Data Distribution Map', # 图的标题
- fontsize=18, # 标题字体大小
- color='white', # 标题字体颜色
- backgroundcolor='#334f65', # 标题的底色
- pad=20)
-
- plt.show() # 展示绘制好的散点图
数据分布图如下,横轴为花瓣长度,纵轴为花瓣宽度。
- #Python
- estimator = KMeans(n_clusters=3) # 构造聚类器, 设置聚类类别数为3
- estimator.fit(X) # 聚类
- label_pred = estimator.labels_ # 获取聚类标签
-
- x0 = X[label_pred == 0] # 获取类别是“0”的数据对象
- x1 = X[label_pred == 1] # 获取类别是“1”的数据对象
- x2 = X[label_pred == 2] # 获取类别是“2”的数据对象
- # “label_pred”的全称应为“label_prediction”
-
- # 绘制 k-means 聚类结果
- plt.scatter(x0[:, 0], x0[:, 1], c="red", marker='H', label='label0', alpha=0.3)
- # 补充: plt.scatter()是绘制散点图的函数
- # c指的是颜色
- # marker指的是散点的形状
- # label指的是标签的名称
- # alpha指的是散点的透明度,取值为[0, 1],0表示完全透明,1表示完全不透明
-
- plt.scatter(x1[:, 0], x1[:, 1], c="green", marker='*', label='label1', alpha=0.3)
- plt.scatter(x2[:, 0], x2[:, 1], c="blue", marker='D', label='label2', alpha=0.3)
-
-
- # 给散点图加上标题
- plt.title('Clustering results', # 标题的名称
- fontsize=18, # 标题的字体大小
- color='white', # 标题的字体颜色
- backgroundcolor='#334f65', # 标题的背景
- pad=20) # 标题的边距
-
- plt.xlabel('sepal length') # 横坐轴
- plt.ylabel('sepal width') # 纵坐轴
-
- plt.legend(loc=2) # 显示图例;“loc”为“location”的意思,设置这个
- # 英文单词legend: (图片或地图的)文字说明,图例
- plt.show() # 记得要加上这句话,散点图才会显示出来
最终K-means聚类结果如下图所示
如果还存在疑惑的,可以在评论区留下您的吐槽
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。