700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Python实现Iris数据集(鸢尾花卉数据集)kmeans聚类

Python实现Iris数据集(鸢尾花卉数据集)kmeans聚类

时间:2019-07-03 06:03:59

相关推荐

Python实现Iris数据集(鸢尾花卉数据集)kmeans聚类

一,鸢尾花Iris数据集解析

二,绘制Iris数据集散点图,数据集已经给出具体类别

from sklearn import datasetsimport matplotlib.pyplot as plt#加载数据集,是一个字典类似Java中的maplris_df = datasets.load_iris()#挑选出前两个维度作为x轴和y轴,你也可以选择其他维度x_axis = lris_df.data[:,0]y_axis = lris_df.data[:,2]#c指定点的颜色,当c赋值为数值时,会根据值的不同自动着色plt.scatter(x_axis, y_axis, c=lris_df.target)plt.show()

三,Python使用kmeans聚类,并绘制新的聚类散点图。

from sklearn import datasetsimport matplotlib.pyplot as pltfrom sklearn.cluster import KMeans#加载数据集,是一个字典类似Java中的maplris_df = datasets.load_iris()#挑选出前两个维度作为x轴和y轴,你也可以选择其他维度x_axis = lris_df.data[:,0]y_axis = lris_df.data[:,2]#这里已经知道了分3类,其他分类这里的参数需要调试model = KMeans(n_clusters=3)#训练模型model.fit(lris_df.data)#选取行标为100的那条数据,进行预测prddicted_label= model.predict([[6.3, 3.3, 6, 2.5]])#预测全部150条数据all_predictions = model.predict(lris_df.data)#打印出来对150条数据的聚类散点图plt.scatter(x_axis, y_axis, c=all_predictions)plt.show()

四,也可以聚成两类:

#将类别参数改成2model = KMeans(n_clusters=2)

五,kmeans算法流程

1)随机选取k个点作为种子点(这k个点不一定属于数据集,k个点就代表有k类)

2)分别计算每个数据点到k个种子点的距离,离哪个种子点最近,就属于哪类

3)重新计算k个种子点的坐标(简单常用的方法是求坐标值的平均值作为新的坐标值)

4)重复2、3步,直到种子点坐标不变或者循环次数完成

六,kmeans的不足

1)初始分类数目k值很难估计,不确定应该分成多少类才最合适(ISODATA算法通过类的自动合并和分裂,得到较为合理的类型数目k)(meanshift也可以不用提前知道分多少类别,参考博文:/u010916338/article/details/86495308)

2)不同的随机种子会得到完全不同的结果(K-Means++算法可以用来解决这个问题,其可以有效地选择初始点)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。