
- 機器學習基礎
- ML - 首頁
- ML - 簡介
- ML - 入門
- ML - 基本概念
- ML - 生態系統
- ML - Python 庫
- ML - 應用
- ML - 生命週期
- ML - 所需技能
- ML - 實現
- ML - 挑戰與常見問題
- ML - 限制
- ML - 真實案例
- ML - 資料結構
- ML - 數學基礎
- ML - 人工智慧
- ML - 神經網路
- ML - 深度學習
- ML - 獲取資料集
- ML - 分類資料
- ML - 資料載入
- ML - 資料理解
- ML - 資料準備
- ML - 模型
- ML - 監督學習
- ML - 無監督學習
- ML - 半監督學習
- ML - 強化學習
- ML - 監督學習 vs. 無監督學習
- 機器學習資料視覺化
- ML - 資料視覺化
- ML - 直方圖
- ML - 密度圖
- ML - 箱線圖
- ML - 相關矩陣圖
- ML - 散點矩陣圖
- 機器學習統計學
- ML - 統計學
- ML - 均值、中位數、眾數
- ML - 標準差
- ML - 百分位數
- ML - 資料分佈
- ML - 偏度和峰度
- ML - 偏差和方差
- ML - 假設
- ML中的迴歸分析
- ML - 迴歸分析
- ML - 線性迴歸
- ML - 簡單線性迴歸
- ML - 多元線性迴歸
- ML - 多項式迴歸
- ML中的分類演算法
- ML - 分類演算法
- ML - 邏輯迴歸
- ML - K近鄰演算法 (KNN)
- ML - 樸素貝葉斯演算法
- ML - 決策樹演算法
- ML - 支援向量機
- ML - 隨機森林
- ML - 混淆矩陣
- ML - 隨機梯度下降
- ML中的聚類演算法
- ML - 聚類演算法
- ML - 基於質心的聚類
- ML - K-Means 聚類
- ML - K-Medoids 聚類
- ML - 均值漂移聚類
- ML - 層次聚類
- ML - 基於密度的聚類
- ML - DBSCAN 聚類
- ML - OPTICS 聚類
- ML - HDBSCAN 聚類
- ML - BIRCH 聚類
- ML - 親和傳播
- ML - 基於分佈的聚類
- ML - 凝聚層次聚類
- ML中的降維
- ML - 降維
- ML - 特徵選擇
- ML - 特徵提取
- ML - 向後剔除法
- ML - 向前特徵構造
- ML - 高相關性過濾器
- ML - 低方差過濾器
- ML - 缺失值比率
- ML - 主成分分析
- 強化學習
- ML - 強化學習演算法
- ML - 利用與探索
- ML - Q學習
- ML - REINFORCE 演算法
- ML - SARSA 強化學習
- ML - 演員評論家方法
- 深度強化學習
- ML - 深度強化學習
- 量子機器學習
- ML - 量子機器學習
- ML - 使用 Python 的量子機器學習
- 機器學習雜項
- ML - 效能指標
- ML - 自動工作流程
- ML - 提升模型效能
- ML - 梯度提升
- ML - 自舉匯聚 (Bagging)
- ML - 交叉驗證
- ML - AUC-ROC 曲線
- ML - 網格搜尋
- ML - 資料縮放
- ML - 訓練和測試
- ML - 關聯規則
- ML - Apriori 演算法
- ML - 高斯判別分析
- ML - 成本函式
- ML - 貝葉斯定理
- ML - 精度和召回率
- ML - 對抗性
- ML - 堆疊
- ML - 輪次
- ML - 感知器
- ML - 正則化
- ML - 過擬合
- ML - P值
- ML - 熵
- ML - MLOps
- ML - 資料洩漏
- ML - 機器學習的商業化
- ML - 資料型別
- 機器學習 - 資源
- ML - 快速指南
- ML - 速查表
- ML - 面試問題
- ML - 有用資源
- ML - 討論
機器學習 - 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 繪製為紅色十字。

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 選擇過程變得計算成本很高。