这不是错误,只是 警告 您并非所有标签都包含在中
y_pred,即
y_test您的分类器无法预测某些标签。
这是一个简单的可复制示例:
from sklearn.metrics import precision_score, f1_score, classification_reporty_true = [0, 1, 2, 0, 1, 2] # 3-class problemy_pred = [0, 0, 1, 0, 0, 1] # we never predict '2'precision_score(y_true, y_pred, average='macro') [...] UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. 'precision', 'predicted', average, warn_for)0.16666666666666666precision_score(y_true, y_pred, average='micro') # no warning0.3333333333333333precision_score(y_true, y_pred, average=None) [...] UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. 'precision', 'predicted', average, warn_for)array([0.5, 0. , 0. ])
会产生完全相同的警告
f1_score(未显示)。
实际上,这只是警告您,在中
classification_report,没有预测样本的标签的相应值(在此处
2)将设置为0:
print(classification_report(y_true, y_pred)) precision recall f1-score support0 0.50 1.00 0.67 21 0.00 0.00 0.00 22 0.00 0.00 0.00 2 micro avg 0.33 0.33 0.33 6 macro avg 0.17 0.33 0.22 6weighted avg 0.17 0.33 0.22 6[...] UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. 'precision', 'predicted', average, warn_for)
当我过去不使用np.array时,它工作得很好
高度怀疑,因为在上面的示例中,我使用了简单的Python列表,而不是Numpy数组…



