我想使用两种方法来评估逻辑回归模型(二进制事件): 1. model.score和confusion矩阵给我81%的分类精度 2. ROC曲线(使用AUC)可返回50%的值
这两个是否有矛盾?那可能吗 我缺少了东西,但仍然找不到
y_pred = log_model.predict(X_test)
accuracy_score(y_test , y_pred)
cm = confusion_matrix( y_test,y_pred )
y_test.count()
print (cm)
tpr , fpr, _= roc_curve( y_test , y_pred, drop_intermediate=False)
roc = roc_auc_score( y_test ,y_pred)
答案 0 :(得分:1)
如果选择的类别的预测概率大于50%,则基于该类别的假设计算准确性得分。这意味着您只需要查看一种情况(一个工作点)。假设您希望将实例分类为“ 0”,即使该实例的概率大于30%(如果您的某个类别对您而言更重要,并且其先验概率非常低,则可能会发生这种情况)。在这种情况下-您将有一个非常不同的混淆矩阵,并且精度不同([TP + TN] / [ALL])。 ROC auc分数检查所有这些工作点,并为您提供整体模型的估计。分数为50%表示该模型等于根据您的先验概率对类进行随机选择。您希望ROC更高,可以说您有一个好的模型。 因此,在上述情况下-您可以说您的模型没有很好的预测强度。实际上-更好的预测是将所有内容预测为“ 1”-在您的情况下,其准确性将达到99%以上。