使用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函式來計算給定標籤集的同質性評分。
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP