Python实现Iris数据集(鸢尾花卉数据集)kmeans聚类 您所在的位置:网站首页 kmeans聚类算法python代码六组数据 Python实现Iris数据集(鸢尾花卉数据集)kmeans聚类

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

2023-10-14 06:43| 来源: 网络整理| 查看: 265

 一,鸢尾花Iris数据集解析

 

 

二,绘制Iris数据集散点图,数据集已经给出具体类别 from sklearn import datasets import matplotlib.pyplot as plt #加载数据集,是一个字典类似Java中的map lris_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 datasets import matplotlib.pyplot as plt from sklearn.cluster import KMeans #加载数据集,是一个字典类似Java中的map lris_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()

 

四,也可以聚成两类: #将类别参数改成2 model = KMeans(n_clusters=2)

 

 五,kmeans算法流程

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

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

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

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

è¿éåå¾çæè¿°

 六,kmeans的不足  

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

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



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有