
- 機器學習基礎
- 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均值聚類
- ML - K中心點聚類
- 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 - 討論
機器學習 - 聚合聚類
聚合聚類是一種層次聚類演算法,它從將每個資料點作為其自身叢集開始,並迭代地合併最接近的叢集,直到達到停止標準。這是一種自下而上的方法,它會生成一個樹狀圖,該圖顯示叢集之間的層次關係。該演算法可以使用 Python 中的 scikit-learn 庫來實現。
Python 實現
我們將使用 iris 資料集進行演示。第一步是匯入必要的庫並載入資料集。
import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.cluster import AgglomerativeClustering from scipy.cluster.hierarchy import dendrogram, linkage iris = load_iris() X = iris.data y = iris.target
下一步是建立一個連線矩陣,其中包含每對叢集之間的距離。我們可以使用 `scipy.cluster.hierarchy` 模組中的 `linkage` 函式來建立連線矩陣。
Z = linkage(X, 'ward')
`ward` 方法用於計算叢集之間的距離。它最小化了被合併的叢集之間距離的方差。
我們可以使用同一模組中的 `dendrogram` 函式來視覺化樹狀圖。
plt.figure(figsize=(7.5, 3.5)) plt.title("Iris Dendrogram") dendrogram(Z) plt.show()
生成的樹狀圖(見下圖)顯示了叢集之間的層次關係。我們可以看到,該演算法首先合併了最接近的叢集,並且隨著我們向上移動樹,叢集之間的距離會增加。

最後一步是應用聚類演算法並提取叢集標籤。我們可以使用 `sklearn.cluster` 模組中的 `AgglomerativeClustering` 類來應用該演算法。
model = AgglomerativeClustering(n_clusters=3) model.fit(X) labels = model.labels_
`n_clusters` 引數指定要從資料中提取的叢集數量。在本例中,我們指定了 `n_clusters=3`,因為我們知道 iris 資料集有三個類別。
我們可以使用散點圖來視覺化生成的叢集。
plt.figure(figsize=(7.5, 3.5)) plt.scatter(X[:, 0], X[:, 1], c=labels) plt.xlabel("Sepal length") plt.ylabel("Sepal width") plt.title("Agglomerative Clustering Results") plt.show()
生成的圖表顯示了演算法識別的三個叢集。我們可以看到,該演算法已成功地將資料點分離到各自的類別中。

示例
以下是 Python 中聚合聚類的完整實現:
import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.cluster import AgglomerativeClustering from scipy.cluster.hierarchy import dendrogram, linkage # Load the Iris dataset iris = load_iris() X = iris.data y = iris.target Z = linkage(X, 'ward') # Plot the dendogram plt.figure(figsize=(7.5, 3.5)) plt.title("Iris Dendrogram") dendrogram(Z) plt.show() # create an instance of the AgglomerativeClustering class model = AgglomerativeClustering(n_clusters=3) # fit the model to the dataset model.fit(X) labels = model.labels_ # Plot the results plt.figure(figsize=(7.5, 3.5)) plt.scatter(X[:, 0], X[:, 1], c=labels) plt.xlabel("Sepal length") plt.ylabel("Sepal width") plt.title("Agglomerative Clustering Results") plt.show()
聚合聚類的優點
以下是使用聚合聚類的優點:
生成一個樹狀圖,顯示叢集之間的層次關係。
可以處理不同型別的距離度量和連線方法。
允許從資料中提取靈活數量的叢集。
可以使用高效的實現來處理大型資料集。
聚合聚類的缺點
以下是使用聚合聚類的一些缺點:
對於大型資料集,計算成本可能很高。
如果距離度量或連線方法不適合資料,則可能會產生不平衡的叢集。
最終結果可能對所使用的距離度量和連線方法的選擇敏感。
對於具有許多叢集的大型資料集,樹狀圖可能難以解釋。