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

一,鸢尾花Iris数据集解析参考博文:https://blog.csdn.net/u010916338/article/details/86487890

二,Python使用meanshift聚类,并绘制聚类散点图。

from sklearn.cluster import MeanShift
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]

#构建模型
model = MeanShift()

#训练模型
model.fit(lris_df.data)

#预测全部150条数据
predicted = model.fit_predict(lris_df.data)

#打印出来对150条数据的聚类散点图
plt.scatter(x_axis,y_axis,c=predicted)

meanshift聚类的效果和kmeans聚成两类的效果相当 

 

三,meanshift算法流程

(1)确定滑动窗口半径r,以随机选取的中心点C半径为r的圆形滑动窗口开始滑动。均值漂移类似一种爬山算法,在每一次迭代中向密度更高的区域移动,直到收敛。 
(2)每一次滑动到新的区域,计算滑动窗口内的均值来作为中心点,滑动窗口内的点的数量为窗口内的密度。在每一次移动中,窗口向密度更高的区域移动。 
(3)移动窗口,计算窗口内的中心点以及窗口内的密度,知道没有方向在窗口内可以容纳更多的点,即一直移动到圆内密度不再增加为止。 
(4)步骤一到三会产生很多个滑动窗口,当多个滑动窗口重叠时,保留包含最多点的窗口,然后根据数据点所在的滑动窗口进行聚类。

单个滑动窗口演示:

è¿éåå¾çæè¿°

多个滑动窗口(其中起始点的个数可以为所有样本或者随机抽样,初始值覆盖面广可以解决kmeans局部最优问题

 è¿éåå¾çæè¿°

四,meanshift的优缺点

优点:

(1)不同于K-Means算法,均值漂移聚类算法不需要我们知道有多少类/组。 
(2)基于密度的算法相比于K-Means受均值影响较小。  

缺点:

窗口大小/半径「r」的选择很重要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值