如前所述,它是在无监督学习中使用的另一种强大的聚类算法,与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()
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
聚类算法 - Mean-Shift - 无涯教程网无涯教程网提供如前所述,它是在无监督学习中使用的另一种强大的聚类算法,与K均值聚类不同,它不做...https://www.learnfk.com/python-machine-learning/machine-learning-with-python-clustering-algorithms-mean-shift.html