python 聚类_Python中的均值漂移聚类算法示例

均值漂移(Mean Shift)是一种层次聚类算法。与监督机器学习算法相比,聚类试图对数据进行分组,而无需首先对标记数据进行训练。聚类用于各种应用,例如搜索引擎,学术排名和医学。与K-Means相反,使用Mean Shift时,您不需要事先知道类(聚类)的数量。Mean Shift的缺点是它的计算成本很高--O(n²)。

它是如何运作的

  1. 定义一个窗口(bandwidth of the kernel)并将窗口放在数据点上
dd2bfbe94b9bfcf8b549fcd11e2903c4.png

2.计算窗口中所有点的平均值

3dd02ee362a40f33dee80f6f08780def.png

3.将窗口的中心移动到平均值的位置

5ecc72877e7f2bdffcdba51323950579.png

4.重复步骤2和3,直到收敛为止

f3041ba2b6616342dd718fcd5912ed8a.png

python中的示例

让我们看一下如何使用python中的Mean Shift算法标记数据。

import numpy as npimport pandas as pdfrom sklearn.cluster import MeanShiftfrom sklearn.datasets.samples_generator import make_blobsfrom matplotlib import pyplot as pltfrom mpl_toolkits.mplot3d import Axes3D
6d52af62a44cd18c6e1d502915f378e6.png

我们使用该make_blobs方法生成自己的机器学习数据。

clusters = [[1,1,1],[5,5,5],[3,10,10]]X, _ = make_blobs(n_samples = 150, centers = clusters, cluster_std = 0.60)
c1760a7e5e416f8df167673400147269.png

训练机器学习模型后,我们存储聚类中心的坐标。

ms = MeanShift()ms.fit(X)cluster_centers = ms.cluster_centers_
f52c15a124e4867a02a77ddfe6179f66.png

最后,我们在3D图中绘制数据点和质心。

fig = plt.figure()ax = fig.add_subplot(111, projection='3d')ax.scatter(X[:,0], X[:,1], X[:,2], marker='o')ax.scatter(cluster_centers[:,0], cluster_centers[:,1], cluster_centers[:,2], marker='x', color='red', s=300, linewidth=5, zorder=10)plt.show()
1f46a966d64a63b9a8ac29b191ab6e88.png
db46ad51095b3032f9cf4f2b2afb71b8.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值