k-means算法实现鸢尾花数据集的聚类

一、算法思想

鸢尾花数据集:共收集了三类鸢尾花,即Setosa鸢尾花Versicolour鸢尾花和Virginica鸢尾花,每一类鸢尾花收集了50条样本记录,共计150条。数据集包括4个属性,四个属性的单位都是cm,属于数值变量,四个属性均不存在缺失值的情况,字段如下:sepal length(萼片长度)、sepal width(萼片宽度)、petal length(花瓣长度)、petal width (花瓣宽度)。

K-means算法:根据样本之间的距离或者说是相似性(亲疏性),把越相似、差异越小的样本聚成一(簇),最后形成多个簇,使同一个簇内部的样本想似度高,不同簇之间差异性高。

 

二、流程图

 

三、实验结果

 

四、源代码

 
from sklearn.datasets import load_iris
import pandas as pd
import matplotlib.pyplot as plt
iris =load_iris()
pd.DataFrame(data=iris.data,columns=iris.feature_names)
x= iris.data[:,:4]

#%%
from sklearn.cluster import KMeans
estimator = KMeans(n_clusters=3)#构造聚类器
estimator.fit(x)
label = estimator.labels_#获取聚类标签
x0 = x[label==0]
x1 = x[label==1]
x2 = x[label==2]
#%%
#二维
plt.scatter(x0[:, 0], x0[:, 1], c = "red", label='Setosa')
plt.scatter(x1[:, 0], x1[:, 1], c = "blue", label='Versicolour')
plt.scatter(x2[:, 0], x2[:, 1], c = "green", label='Virginica')
plt.xlabel(iris.feature_names[0])
plt.ylabel(iris.feature_names[1])
plt.legend(loc=2)
plt.show()
#%%
#三维
from mpl_toolkits.mplot3d import Axes3D
fig = plt.figure(1,figsize=(8,6))
ax = Axes3D(fig,elev=-150,azim=110)

ax.scatter(x0[:, 0], x0[:, 1],x0[:,2] ,c="red",label='Setosa')
ax.scatter(x1[:, 0], x1[:, 1],x1[:,2] , c="blue",label='Versicolour')
ax.scatter(x2[:, 0], x2[:, 1],x2[:,2] , c="green",label='Virginica')

ax.set_xlabel(iris.feature_names[0])
ax.w_xaxis.set_ticklabels([])
ax.set_ylabel(iris.feature_names[1])
ax.w_yaxis.set_ticklabels([])
ax.set_zlabel(iris.feature_names[2])
ax.w_zaxis.set_ticklabels([])
ax.legend(loc=2)
plt.show()
#%%
#四维
fig = plt.figure(1,figsize=(8,6))
ax = Axes3D(fig,elev=-150,azim=110)

x= iris.data[:,:1]
y=iris.data[:,1:2]
z=iris.data[:,2:3]
c=iris.data[:,3:4]
img= ax.scatter(x,y,z,c=c,cmap=plt.hot())

  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值