聚类算法 - Mean-Shift

聚类算法 - Mean-Shift 首页 / 机器学习入门教程 / 聚类算法 - Mean-Shift

如前所述,它是在无监督学习中使用的另一种强大的聚类算法,与K均值聚类不同,它不做任何假设,因此,它是一种非参数算法。

均值平移算法基本上是通过将数据点移向最高密度的数据点(即群集质心)来迭代地将数据点分配给群集。

K-Means算法与Mean-Shift之间的区别在于,后一种算法无需预先指定簇数,因为簇数将由算法的w.t.t数据确定。

Mean-Shift算法

通过以下步骤,无涯教程可以了解Mean-Shift聚类算法的工作原理:

  • 步骤1    - 首先,从分配给它们自己的群集的数据点开始。

  • 步骤2   - 接下来,此算法将计算质心。

  • 步骤3   - 在此步骤中,将更新新质心的位置。

  • 步骤4   - 现在,该过程将被迭代并移至更高密度的区域。

  • 步骤5   - 最后,一旦形心到达无法进一步移动的位置,它将停止。

代码实现

这是一个了解Mean-Shift算法工作原理的简单示例。在示例中,将首先生成包含4个不同Blob的2D数据集,然后将应用Mean-Shift算法查看输出。

%matplotlib inline
import numpy as np
from sklearn.cluster import MeanShift
import matplotlib.pyplot as plt
from matplotlib import style
style.use("ggplot")
from sklearn.datasets.samples_generator import make_blobs
centers = [[3,3,3],[4,5,5],[3,10,10]]
X, _ = make_blobs(n_samples = 700, centers = centers, cluster_std = 0.5)
plt.scatter(X[:,0],X[:,1])
plt.show()
Mean Shift ALgorithm
ms = MeanShift()
ms.fit(X)
labels = ms.labels_
cluster_centers = ms.cluster_centers_
print(cluster_centers)
n_clusters_ = len(np.unique(labels))
print("Estimated clusters:", n_clusters_)
colors = 10*['r.','g.','b.','c.','k.','y.','m.']

for i in range(len(X)):
   plt.plot(X[i][0], X[i][1], colors[labels[i]], markersize = 3)
plt.scatter(cluster_centers[:,0],cluster_centers[:,1],
   marker = ".",color = 'k', s = 20, linewidths = 5, zorder = 10)
plt.show()
[[ 2.98462798 9.9733794 10.02629344]
[ 3.94758484 4.99122771 4.99349433]
[ 3.00788996 3.03851268 2.99183033]]
Estimated clusters: 3
Generate Dataset

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

微服务架构实战160讲 -〔杨波〕

深入拆解Java虚拟机 -〔郑雨迪〕

MySQL实战45讲 -〔林晓斌〕

浏览器工作原理与实践 -〔李兵〕

陈天 · Rust 编程第一课 -〔陈天〕

深入C语言和程序运行原理 -〔于航〕

商业思维案例笔记 -〔曹雄峰〕

现代C++20实战高手课 -〔卢誉声〕

结构思考力 · 透过结构看表达 -〔李忠秋〕

好记忆不如烂笔头。留下您的足迹吧 :)