sklearn聚類詳解

一、sklearn聚類演算法

聚類演算法是一種機器學習演算法,常見的sklearn聚類演算法有KMeans、DBSCAN、層次聚類、高斯混合聚類等。其中,KMeans是最常用的一種聚類演算法,也是sklearn中最基本的聚類演算法之一。


from sklearn.cluster import KMeans

# 創建一個聚類器對象,參數n_clusters代表聚類的個數
kmeans = KMeans(n_clusters=3)

# 聚類
kmeans.fit(X)

二、sklearn數據集

sklearn中提供了一些經常被用來測試分類演算法和聚類演算法的數據集,例如鳶尾花數據集、手寫數字數據集等。對於初學者來說,這些數據集可以用來快速地了解分類和聚類演算法的基本使用。


from sklearn.datasets import load_iris

# 載入鳶尾花數據集
iris = load_iris()

# 獲取數據集的特徵和標籤
X = iris.data
y = iris.target

三、sklearn聚類方法

sklearn中提供了多種聚類方法,包括KMeans、DBSCAN、層次聚類、高斯混合聚類等。這些聚類方法在聚類方式、聚類效果和使用方法上都有一定的區別。


# 使用KMeans聚類
from sklearn.cluster import KMeans

kmeans = KMeans(n_clusters=3)
kmeans.fit(X)

# 使用DBSCAN聚類
from sklearn.cluster import DBSCAN

dbscan = DBSCAN(eps=0.5, min_samples=5)
dbscan.fit(X)

四、sklearn聚類評價指標

在聚類中,我們常常需要評價聚類效果的好壞。常見的評價指標有輪廓係數(silhouette coefficient)、Calinski-Harabasz指數和Davies-Bouldin指數等。


# 使用輪廓係數評價KMeans聚類效果
from sklearn.metrics import silhouette_score

score = silhouette_score(X, kmeans.labels_, metric='euclidean')
print(score)

五、sklearn聚類分析

對於得到的聚類結果,我們需要進行可視化分析。sklearn中提供了多種可視化方法,例如利用t-SNE降維和PCA降維將高維數據可視化。


# 利用t-SNE可視化聚類效果
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt

# 將高維數據降維到2維
tsne = TSNE(n_components=2, init='pca', random_state=501)
X_tsne = tsne.fit_transform(X)

# 繪製聚類效果圖
plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=kmeans.labels_)
plt.show()

六、sklearn聚類實例

下面通過一個實際的案例來應用sklearn的聚類演算法,對紅酒進行聚類。


# 載入紅酒數據集
from sklearn.datasets import load_wine
wine = load_wine()

# 使用KMeans聚類
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3)
kmeans.fit(wine.data)

# 可視化聚類結果
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt

# 將高維數據降維到2維
tsne = TSNE(n_components=2, init='pca', random_state=501)
wine_tsne = tsne.fit_transform(wine.data)

# 繪製聚類效果圖
plt.scatter(wine_tsne[:, 0], wine_tsne[:, 1], c=kmeans.labels_)
plt.show()

七、sklearn聚類代碼

下面是一個完整的聚類代碼示例,包括對數據的載入、標準化、聚類、聚類效果評估和可視化等。


# 載入數據集
from sklearn.datasets import load_iris
iris = load_iris()

# 標準化數據
from sklearn.preprocessing import StandardScaler
X = StandardScaler().fit_transform(iris.data)

# 使用KMeans聚類
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3)
kmeans.fit(X)

# 使用輪廓係數評價聚類效果
from sklearn.metrics import silhouette_score
score = silhouette_score(X, kmeans.labels_, metric='euclidean')
print("輪廓係數:", score)

# 使用t-SNE可視化聚類效果
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt

# 將高維數據降維到2維
tsne = TSNE(n_components=2, init='pca', random_state=501)
X_tsne = tsne.fit_transform(X)

# 繪製聚類效果圖
plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=kmeans.labels_)
plt.show()

八、sklearn聚類中心

在kmeans聚類演算法中,聚類中心是聚類的核心,所有數據點都將根據它們與聚類中心之間的距離來進行聚類。


# 獲取聚類中心
centers = kmeans.cluster_centers_

# 繪製聚類中心
plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=kmeans.labels_)
plt.scatter(centers[:, 0], centers[:, 1], c='r', s=120, marker='s')
plt.show()

九、sklearn聚類基於分層的聚類演算法

分層聚類是一種聚類方法,它將數據點分為多個層次,並將同一層次中的數據點分為一個簇。sklearn中的分層聚類包括凝聚層次聚類和分裂層次聚類。


# 使用凝聚層次聚類
from sklearn.cluster import AgglomerativeClustering

agg = AgglomerativeClustering(n_clusters=3)
agg.fit(X)

# 可視化聚類結果
plt.scatter(X_tsne[:, 0], X_tsne[:, 1], c=agg.labels_)
plt.show()

十、sklearn聚類之前要標準化嗎

在使用聚類演算法之前,我們通常需要標準化數據,以保證各特徵之間的差異對聚類結果的影響減小。由於聚類演算法通常是基於距離計算的,因此數據中不同特徵的量綱和範圍可能會影響聚類結果。


# 數據標準化
from sklearn.preprocessing import StandardScaler
X = StandardScaler().fit_transform(X)

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/240609.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 12:24
下一篇 2024-12-12 12:24

相關推薦

  • Python sklearn安裝教程

    本文將為大家詳細介紹在Python中安裝scikit-learn(簡稱sklearn)的過程,讓你能夠快速掌握如何使用這個強大的Python開源機器學習庫。 一、安裝Python …

    編程 2025-04-27
  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web伺服器。nginx是一個高性能的反向代理web伺服器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • MPU6050工作原理詳解

    一、什麼是MPU6050 MPU6050是一種六軸慣性感測器,能夠同時測量加速度和角速度。它由三個感測器組成:一個三軸加速度計和一個三軸陀螺儀。這個組合提供了非常精細的姿態解算,其…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分散式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變數讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25

發表回復

登錄後才能評論