监督聚类 – 评估每个真实标签的指标?

我在一个数据集上进行K-means聚类,并且我有可用的真实标签。我在聚类过程中使用这些标签来找到最佳的K值,并计算了V-Measure和调整后的Rand分数。

为了评估我的最佳模型,我希望为每个已知标签提供一个指标,描述它被聚类的效果如何——几乎就像纯度分数,但适用于跨多个聚类的标签。

例如,标签0有5个数据点,因此我们有以下情况:
true_labels = [0,0,0,0,0]
cluster_numbers = [1,1,1,1,1](即所有标签0的点都在同一个聚类中)
–> 应返回完美的分数1.0

如果标签的点分布在多个聚类中,像这样
cluster_numbers = [0,0,0,1,1]
–> 返回分数0.6

有没有人知道可以用来评估聚类中每个真实标签的指标?这不必像我上面给出的例子那样工作。


回答:

我认为你可以尝试评估混淆矩阵并检查多数投票。例如,我们使用鸢尾花数据集:

from sklearn.datasets import load_irisfrom sklearn.cluster import SpectralClusteringfrom sklearn.metrics import confusion_matriximport pandas as pd    data = load_iris()df = pd.DataFrame(data.data, columns=['sepal.length','sepal.width','petal.length','petal.width'])labels = data.target

然后我们进行谱聚类:

clustering = SpectralClustering(n_clusters=3,assign_labels="discretize",random_state=0).fit(df)    M = confusion_matrix(labels,clustering.labels_)    Marray([[ 0, 50,  0],      [ 2,  0, 48],      [37,  0, 13]])

对于每一行,你都有每个标签的预测。你上面提到的纯度是这样的:

np.max(M,axis=1)/np.sum(M,axis=1)array([1.  , 0.96, 0.74])

如果你想要一个总体的一致性评分,你可以使用:

from sklearn.metrics import adjusted_rand_scoreadjusted_rand_score(labels,clustering.labels_)0.7436826319432357

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注