错误“警告:精度和 F 分数定义不明确,在没有预测样本的标签中设置为 0.0。使用 `zero_division` 参数”

Uni*_*orn 7 python machine-learning scikit-learn

我该如何解决这个错误?

警告:精度和 F 分数定义不明确,在没有预测样本的标签中设置为 0.0。使用zero_division参数来控制此行为。_warn_prf(平均值,修饰符,msg_start,len(结果))

当我添加 Adam 的调整参数时出现错误。

# Tuning parameter from keras.optimizers import Adam
optimize = Adam(learning_rate=0.00001, beta_1=0.9, beta_2=0.99)
model.compile(optimizer=optimize, loss='categorical_crossentropy', metrics=['accuracy'])
Run Code Online (Sandbox Code Playgroud)

这段代码的错误是什么?

from sklearn.metrics import confusion_matrix, classification_report

prediksi = model.predict(test_data_generator)
y_pred = np.argmax(prediksi, axis=1)
print(confusion_matrix(test_data_generator.classes, y_pred))
print(classification_report(test_data_generator.classes, y_pred))
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用labels=np.unique(y_pred),但结果并没有显示 的​​准确性

Ant*_*uis 9

出现此警告是因为y_true包含预测 ( y_pred) 中不存在的标签,如下例所示:

import numpy as np
from sklearn.metrics import confusion_matrix, classification_report

y_pred = np.ones(10,)
y_true = np.ones(10,)
y_true[0]=0
print(confusion_matrix(y_true,y_pred))
print(classification_report(y_true,y_pred))
Run Code Online (Sandbox Code Playgroud)

您可以通过设置classification_reportargument来删除此警告zero_division=1

但这并不明智,因为它表明您的分类器存在问题。