使用sklearn在Python中計算同質性評分


在使用Python的聚類演算法時,評估模型的效能非常重要,而評估聚類模型效能的常用指標之一就是使用sklearn的同質性評分。它衡量聚類演算法分配的標籤與資料集的真實標籤匹配程度。同質性評分越高,聚類演算法的效能越好。

在本文中,我們將仔細研究同質性評分以及如何在Python中使用Scikit-learn計算它。

什麼是同質性評分?

同質性評分是用於評估聚類模型(即標籤集)效能的指標。它衡量給定聚類模型的標籤與特定資料集的真實標籤的匹配程度。

要理解同質性評分的工作原理,請考慮像K均值聚類演算法這樣的聚類演算法,它將資料集劃分為多個聚類。如果演算法能夠很好地將資料點分成不同的組,則同質性評分將很高。另一方面,如果演算法將資料點分配到錯誤的聚類或組,則同質性評分將很低。

語法

sklearn.metrics.homogeneity_score(labels_true, labels_pred)

引數

序號 引數 定義
1 labels_true int型陣列,形狀 = [n_samples] 用於參考的真實類標籤。
2 labels_pred 形狀為(n_samples,)的類陣列 用於評估聚類標籤。

此函式返回同質性評分(浮點數),介於0.0和1.0之間,其中1.0表示完全均勻的標記。

如何在Python中計算同質性評分?

要使用Sklearn在Python中計算homogeneity_score,我們可以使用sklearn.metrics.cluster模組中的homogeneity_score函式。以下是使用make_blobs生成隨機資料集來計算Python中同質性評分的示例:

使用隨機資料計算同質性評分的程式

from sklearn.metrics.cluster import homogeneity_score
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs

# Generate a random dataset
X1, y1 = make_blobs(n_samples=2000, centers=6 ,random_state=50)

# Perform clustering using KMeans
kmeans1 = KMeans(n_clusters=6, random_state=50)
labels1 = kmeans1.fit_predict(X1)

# Compute the homogeneity score
homo_score = homogeneity_score(y1, labels1)

print("Homogeneity score:", homo_score)

輸出

Homogeneity score: 0.8845679179458327

在上面的例子中,我們首先使用Scikit-learn中的make_blobs函式生成一個隨機資料集。然後,我們使用具有5個聚類的KMeans演算法進行聚類。最後,我們使用homogeneity_score函式計算同質性評分,我們將真實標籤y和預測標籤labels作為引數傳遞。

使用內建資料集(iris)計算同質性評分的程式

對於此示例,我們將使用Scikit-learn自帶的iris資料集。我們將根據其特徵對樣本或資料集進行聚類,並使用同質性評分評估模型的效能。

按照以下步驟使用內建資料集(iris)計算同質性評分:

  • 使用Scikit-learn中的load_iris函式載入iris資料集。

  • 從資料集中提取資料和真實標籤。

  • 使用具有三個聚類的KMeans演算法執行聚類(因為iris資料集中有三個類別)。

  • 使用Scikit-learn中的homogeneity_score函式計算同質性評分,並將真實標籤y_true和預測標籤y_pred作為引數傳遞。

以下是載入資料然後使用KMeans聚類計算同質性評分的程式碼:

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans

from sklearn.metrics import homogeneity_score

# Load the iris dataset
iris_df = load_iris()
X1 = iris_df.data
y1_true = iris_df.target

# Perform clustering using KMeans
kmeans = KMeans(n_clusters=3, random_state=50)
y1_pred = kmeans.fit_predict(X1)

# Compute the homogeneity score
homo_score = homogeneity_score(y1_true, y1_pred)

print("Homogeneity score:", homo_score)

輸出

Homogeneity score: 0.7514854021988338

執行此程式碼時,您應該會在控制檯中看到打印出的同質性評分。同質性評分的值介於0和1之間,值越高表示聚類效能越好。

結論

總之,同質性評分是評估KMeans聚類等聚類演算法效能的重要且有用的指標。我們瞭解到,透過計算同質性評分,我們可以確定給定的聚類演算法將資料集分成不同的組的程度。在Python中,我們可以使用Scikit-learn中的homogeneity_score函式來計算給定標籤集的同質性評分。

更新於:2023年7月24日

647 次瀏覽

啟動你的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.