【发布时间】:2018-03-05 15:58:10
【问题描述】:
我对机器学习完全陌生,我正在尝试使用 scikit-learn 制作一个简单的逻辑回归模型,其中包含 1 个输入变量 (X) 和一个二元结果 (Y)。我的数据由 325 个样本组成,其中 39 次成功,286 次失败。数据被分成训练和测试(30%)集。
我的目标实际上是根据我的数据获得任何给定 X 的预测成功概率,而不是分类预测本身。也就是说,我将在我正在构建的单独模型中使用预测概率,并且根本不会使用逻辑回归作为分类器。因此,预测的概率实际上与数据相符是很重要的。
但是,我无法理解我的模型是否适合数据,或者计算出的概率是否真的准确。
我得到以下指标:
分类准确度:metrics.accuracy_score(Y_test, predicted) = 0.92。 我对这个指标的理解是,该模型很有可能做出正确的预测,因此在我看来,该模型非常适合。
对数损失:cross_val_score(LogisticRegression(), X, Y,scoring='neg_log_loss', cv=10) = -0.26 这对我来说可能是最令人困惑的指标,而且显然是最重要的,因为它是预测概率的准确性。我知道分数越接近零越好 - 但有多接近才足够接近?
AUC:metrics.roc_auc_score(Y_test, probs[:, 1]) = 0.9。同样,这看起来不错,因为 ROC 分数越接近 1 越好。
-
混淆矩阵:metrics.confusion_matrix(Y_test, predicted) =
[ 88, 0] [8, 2]我的理解是,对角线给出了训练集中正确预测的数量,所以这看起来没问题。
-
报告:metrics.classification_report(Y_test, predict) =
precision recall f1-score support 0.0 0.92 1.00 0.96 88 1.0 1.00 0.20 0.33 10 avg / total 0.93 0.92 0.89 98根据这份分类报告,该模型具有良好的精度,因此非常适合。 我不确定如何解释召回,或者该报告是否对我的模型来说是个坏消息——sklearn 文档指出召回是一种模型能够找到所有正样本的能力——因此预测为 1 的得分为 0.2 意味着它只能在 20% 的时间里找到积极的一面?这听起来很不适合数据。
如果有人能澄清我正在以正确的方式解释这些指标,我将非常感激 - 或许能阐明我的模型是好还是假。另外,如果我可以做任何其他测试来确定计算的概率是否准确,请告诉我。
如果这些不是很好的指标分数,我真的很感激关于下一步改进的方向。
谢谢!!
【问题讨论】:
标签: python machine-learning scikit-learn logistic-regression