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均值算法属于聚类算法,可以将没有标签的数据进行分类。

在实际生活中,可以帮助细分市场,可以将客户划分至不同的细分市场组,以便营销和服务;

又或者可以进行社交网络分析,观察人与人之间的互相来往,从而查找一群互相有关系的人等等。

猜你喜欢

转载自www.cnblogs.com/cyxxixi/p/12709892.html