機器學習 - K-Medoids 聚類



K-Medoids 聚類 - 演算法

K-medoids 聚類演算法可以總結如下:

  • 初始化 k 個 medoids - 從資料集中選擇 k 個隨機資料點作為初始 medoids。

  • 將資料點分配給 medoids - 將每個資料點分配給最近的 medoid。

  • 更新 medoids - 對於每個叢集,選擇最小化到叢集中所有其他資料點的距離總和的資料點,並將其設定為新的 medoid。

  • 重複步驟 2 和 3 直到收斂或達到最大迭代次數。

Python 實現

要在 Python 中實現 K-medoids 聚類,我們可以使用 scikit-learn 庫。scikit-learn 庫提供了KMedoids 類,可用於對資料集執行 K-medoids 聚類。

首先,我們需要匯入所需的庫:

from sklearn_extra.cluster import KMedoids
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt

接下來,我們使用 scikit-learn 中的 make_blobs() 函式生成樣本資料集:

X, y = make_blobs(n_samples=500, centers=3, random_state=42)

在這裡,我們生成一個包含 500 個數據點和 3 個叢集的資料集。

接下來,我們初始化 KMedoids 類並擬合數據:

kmedoids = KMedoids(n_clusters=3, random_state=42)
kmedoids.fit(X)

在這裡,我們將叢集數量設定為 3,並使用 random_state 引數確保可重複性。

最後,我們可以使用散點圖視覺化聚類結果:

plt.figure(figsize=(7.5, 3.5))
plt.scatter(X[:, 0], X[:, 1], c=kmedoids.labels_, cmap='viridis')
plt.scatter(kmedoids.cluster_centers_[:, 0],
kmedoids.cluster_centers_[:, 1], marker='x', color='red')
plt.show()

示例

以下是 Python 中的完整實現:

from sklearn_extra.cluster import KMedoids
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt

# Generate sample data
X, y = make_blobs(n_samples=500, centers=3, random_state=42)

# Cluster the data using KMedoids
kmedoids = KMedoids(n_clusters=3, random_state=42)
kmedoids.fit(X)

# Plot the results
plt.figure(figsize=(7.5, 3.5))
plt.scatter(X[:, 0], X[:, 1], c=kmedoids.labels_, cmap='viridis')
plt.scatter(kmedoids.cluster_centers_[:, 0],
kmedoids.cluster_centers_[:, 1], marker='x', color='red')
plt.show()

輸出

在這裡,我們將資料點繪製為散點圖,並根據其叢集標籤對其進行著色。我們還將 medoids 繪製為紅色十字。

medoids

K-Medoids 聚類 - 優點

以下是使用 K-medoids 聚類的優點:

  • 對異常值和噪聲具有魯棒性 - K-medoids 聚類比 K-means 聚類對異常值和噪聲更具魯棒性,因為它使用代表性資料點(稱為 medoid)來表示叢集的中心。

  • 可以處理非歐幾里得距離度量 - K-medoids 聚類可以與任何距離度量一起使用,包括非歐幾里得距離度量,例如曼哈頓距離和餘弦相似度。

  • 計算效率高 - K-medoids 聚類的計算複雜度為 O(k*n^2),低於 K-means 聚類的計算複雜度。

K-Medoids 聚類 - 缺點

使用 K-medoids 聚類的缺點如下:

  • 對 k 的選擇敏感 - K-medoids 聚類的效能可能對 k(叢集數量)的選擇敏感。

  • 不適用於高維資料 - K-medoids 聚類可能在高維資料上表現不佳,因為 medoid 選擇過程變得計算成本很高。

廣告