3.k均值的算法
作者:互联网
一、课堂练习
# 课堂练习 from sklearn.datasets import load_iris # 导入鸢尾花数据 iris=load_iris() iris iris.keys() data=iris['data'] #鸢尾花数据 target=iris.target #标签,属于哪一种花 iris.feature_names #特征名:花萼长度、花萼宽度、花瓣长度、花瓣宽度 # 'sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'
二、作业
1). 扑克牌手动演练k均值聚类过程:>30张牌,3类
第一次分类 | 第一次类中心 | 1 | 8 | 13 |
sum | 18 | 127 | 86 | |
mean | 18/8 | 127/18 | 86/7 | |
第二次分类 | 第二次类中心 | 2.25 | 7.05 | 12.28 |
sum | 18 | 107 | 106 | |
mean | 18/8 | 107/16 | 106/9 | |
第三次分类 | 第三次新中心 | 2.25 | 6.68 | 11.77 |
sum | 18 | 107 | 106 | |
mean | 18/8 | 107/16 | 106/9 | |
聚类中心 | 中心 | 2.25 | 6.68 | 11.77 |
2). *自主编写K-means算法 ,以鸢尾花花瓣长度数据做聚类,并用散点图显示。(加分题)
3). 用sklearn.cluster.KMeans,鸢尾花花瓣长度数据做聚类,并用散点图显示.
from sklearn.datasets import load_iris from sklearn.cluster import KMeans import matplotlib.pyplot as plt # 导入鸢尾花数据 iris=load_iris() data=iris['data'] #鸢尾花数据 petal=data[:,2] #花瓣长度数据 # # 换成n行1列,-1是任意行的意思 X_petal=petal.reshape(-1,1) model1=KMeans(n_clusters=3) #构建模型,聚类中心个数为3 model1.fit(X_petal) #模型训练 Y_petal=model1.predict(X_petal) #模型训练过后,根据花瓣长度预测分类 # c是按颜色分类,cmap是设置颜色 # x轴是花瓣数据,y轴是鸢尾花分类 plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.scatter(X_petal[:,0],Y_petal,c=Y_petal,cmap="rainbow") plt.xlabel("花瓣长度(cm)") plt.ylabel("鸢尾花分类") plt.yticks(range(3),labels=['setosa','versicolor','virginica'])
4). 鸢尾花完整数据做聚类并用散点图显示.
from sklearn.datasets import load_iris from sklearn.cluster import KMeans import matplotlib.pyplot as plt # 导入鸢尾花数据 iris=load_iris() X_iris=iris.data #鸢尾花完整数据 model=KMeans(n_clusters=3) #构建模型,聚类中心个数为3 model.fit(X_iris) #模型训练 Y_iris=model.predict(X_iris) #模型训练过后,根据所有数据预测分类 plt.scatter(X_iris[:,2],X_iris[:,3],c=Y_iris,cmap="rainbow") plt.xlabel("花瓣长度(cm)") plt.ylabel("花瓣宽度(cm)")
5).想想k均值算法中以用来做什么?
K均值算法属于聚类算法,可以将没有标签的数据进行分类。
在实际生活中,可以帮助细分市场,可以将客户划分至不同的细分市场组,以便营销和服务;
又或者可以进行社交网络分析,观察人与人之间的互相来往,从而查找一群互相有关系的人等等。
标签:iris,plt,petal,均值,18,算法,聚类,鸢尾花 来源: https://www.cnblogs.com/cyxxixi/p/12709892.html