我正在训练ML逻辑分类器以使用python scikit-learn对两个类进行分类。他们处于非常不平衡的数据(约14300:1)。我的准确性和ROC-AUC几乎达到100%,但精确度,召回率和f1得分分别为0%。我知道准确度通常对非常不平衡的数据没有用,但为什么ROC-AUC指标也接近完美呢?如何解释几乎完美的准确性和AUC-ROC,但零f1分数,精度和召回
from sklearn.metrics import roc_curve, auc
# Get ROC
y_score = classifierUsed2.decision_function(X_test)
false_positive_rate, true_positive_rate, thresholds = roc_curve(y_test, y_score)
roc_auc = auc(false_positive_rate, true_positive_rate)
print 'AUC-'+'=',roc_auc
1= class1
0= class2
Class count:
0 199979
1 21
Accuracy: 0.99992
Classification report:
precision recall f1-score support
0 1.00 1.00 1.00 99993
1 0.00 0.00 0.00 7
avg/total 1.00 1.00 1.00 100000
Confusion matrix:
[[99992 1]
[ 7 0]]
AUC= 0.977116255281
以上是使用逻辑回归,下面是使用决策树,决策矩阵看起来几乎相同,但AUC是很大的不同。
1= class1
0= class2
Class count:
0 199979
1 21
Accuracy: 0.99987
Classification report:
precision recall f1-score support
0 1.00 1.00 1.00 99989
1 0.00 0.00 0.00 11
avg/total 1.00 1.00 1.00 100000
Confusion matrix:
[[99987 2]
[ 11 0]]
AUC= 0.4999899989
你可能想给我们混淆矩阵。直觉上,我猜想这是不可能的,但我现在没有时间去做数学。 – cel
感谢您的建议,我添加了代码和结果 – KubiK888
解释:您没有任何可预测性。你基本上没有类1的例子,并预测所有错误。你最好总是简单地预测'0'。 – cel