我正在使用一个模板脚本并尝试输入我的数据。然而,我不确定错误中提到的 ‘labels_true’ 是什么意思,因为错误显示它未定义。
这是我的数据数组:
data=array([[5.71585827e+00, 3.32320000e+04],
[0.00000000e+00, 0.00000000e+00],
[0.00000000e+00, 0.00000000e+00],
...,
[9.57746479e-02, 3.40000000e+01],
[7.01388889e-01, 1.01000000e+02],
[9.70350404e-02, 3.60000000e+01]])
现在我正在应用这个脚本:
import numpy as np
from sklearn.cluster import DBSCAN
from sklearn import metrics
from sklearn.preprocessing import StandardScaler
# #############################################################################
X=data
X = StandardScaler().fit_transform(X)
# #############################################################################
# 计算 DBSCAN
db = DBSCAN(eps=0.3, min_samples=10).fit(X)
labels = db.labels_
print("Homogeneity: %0.3f" % metrics.homogeneity_score(labels_true, labels))
NameError: name 'labels_true' is not defined
回答:
从 scikit-learn 的 文档 中关于 homogeneity_score
的描述(强调部分已加粗):
给定真实标签的聚类标记的同质性指标。
其中 labels_true
是
用作参考的真实类别标签
因此,如果你已经有了真实标签,那就是 labels_true
参数,它将与你预测的 labels
进行比较以得出分数。
这里的错误显然是因为你没有在 labels_true
中提供这样的真实标签,并且正如错误所述,该变量未定义。
如果没有真实标签可用,直接的结果就是无法使用该指标。