使用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.