在 Python 中實現均值漂移演算法
機器學習中存在許多型別的聚類演算法。這些演算法可以在 Python 中實現。在本文中,讓我們討論並使用 Python 實現“均值漂移”演算法。它是一種用作無監督學習方法的聚類演算法。
在此演算法中,沒有做出任何假設。這意味著它是一種非引數演算法。該演算法透過迭代方式將資料點分配到某些叢集,這是透過將這些資料點移向資料點密度最高的位置來完成的。
資料點的高密度被稱為叢集的質心。均值漂移演算法和 K 均值聚類之間的區別在於,在前者(K 均值)中,需要提前指定叢集的數量。
這是因為叢集的數量是根據現有資料使用 K 均值演算法找到的。
讓我們瞭解均值漂移演算法中的步驟 -
資料點被分配到它自己的叢集。
然後,確定這些叢集的質心。
這些質心的位置被迭代更新。
接下來,該過程移動到更高密度的區域。
一旦質心到達無法進一步移動的位置,該過程就會停止。
讓我們瞭解如何使用 scikit-learn 在 Python 中實現它 -
示例
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,1],[4,5,5],[11,10,10]]
X, _ = make_blobs(n_samples = 950, centers = centers, cluster_std = 0.89)
plt.title("Implementation of Mean-Shift algorithm")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.scatter(X[:,0],X[:,1])
plt.show()
ms = MeanShift()
ms.fit(X)
labels = ms.labels_
clusterCent = ms.cluster_centers_
print(clusterCent)
numCluster = len(np.unique(labels))
print("Estimated clusters:", numCluster)
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(clusterCent[:,0],clusterCent[:,1],
marker=".",color='k', s=20, linewidths = 5, zorder=10)
plt.show()輸出

[[ 3.05250924 3.03734994 1.06159541] [ 3.92913017 4.99956874 4.86668482] [10.99127523 10.02361122 10.00084718]] Estimated clusters: 3

解釋
匯入所需的包併為其定義別名以方便使用。
將“ggplot”指定給“style”類中存在的“use”函式。
使用“make_blobs”函式建立資料叢集。
使用 set_xlabel、set_ylabel 和 set_title 函式為“X”軸、“Y”軸和標題提供標籤。
呼叫“MeanShift”函式,並將其分配給一個變數。
將資料擬合到模型。
定義標籤和叢集數量。
繪製此資料,並顯示擬合到模型的資料的散點圖。
使用“show”函式在控制檯上顯示。
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP