- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我对 cross_val_score 评分指标“roc_auc”和我可以直接导入和调用的 roc_auc_score 之间的区别感到困惑。
文档 ( http://scikit-learn.org/stable/modules/model_evaluation.html#scoring-parameter ) 表明指定 scoring='roc_auc' 将使用 sklearn.metrics.roc_auc_score。但是,当我使用 scoring='roc_auc' 实现 GridSearchCV 或 cross_val_score 时,我收到的数字与直接调用 roc_auc_score 时截然不同。
这是我的代码,用于帮助演示我所看到的内容:
# score the model using cross_val_score
rf = RandomForestClassifier(n_estimators=150,
min_samples_leaf=4,
min_samples_split=3,
n_jobs=-1)
scores = cross_val_score(rf, X, y, cv=3, scoring='roc_auc')
print scores
array([ 0.9649023 , 0.96242235, 0.9503313 ])
# do a train_test_split, fit the model, and score with roc_auc_score
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
rf.fit(X_train, y_train)
print roc_auc_score(y_test, rf.predict(X_test))
0.84634039111363313 # quite a bit different than the scores above!
我觉得我在这里遗漏了一些非常简单的东西——很可能是我在如何实现/解释其中一个评分指标方面的错误。
谁能阐明这两个评分指标之间存在差异的原因?
最佳答案
这是因为您提供了预测的 y 而不是 roc_auc_score 中的概率。此函数采用分数,而不是分类标签。尝试这样做:
print roc_auc_score(y_test, rf.predict_proba(X_test)[:,1])
它应该给出与之前来自 cross_val_score 的结果相似的结果。 Refer to this post for more info .
关于python - 得分为 ='roc_auc' 的 cross_val_score 和 roc_auc_score 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33642158/
我想计算我的分类器的 AUC、精确度和准确度。我在做监督学习: 这是我的工作代码。此代码适用于二进制类,但不适用于多类。请假设您有一个包含二进制类的数据框: sample_features_dataf
我正在对现有数据框执行 k-fold XV,我需要获得 AUC 分数。问题是 - 有时测试数据只包含 0,而不包含 1! 我尝试使用 this例如,但数字不同: import numpy as np
我正在使用 scikit-learn 中的 roc_auc_score 函数来评估我的模型性能。但是,无论我使用 predict() 还是 predict_proba(),我都会得到不同的值 p_pr
我正在尝试使用 sklearn.metrics.roc_auc_score 使用以下方法计算 ROC 曲线下的面积: roc_auc = sklearn.metrics.roc_auc_score(a
我很难理解 scikit-learn 中 roc_auc_score() 和 auc() 之间的区别(如果有的话)。 我想预测具有不平衡类的二进制输出(Y=1 约为 1.5%)。 分类器 model_
我正在训练一个 RandomForestClassifier (sklearn) 来预测信用卡欺诈。然后当我测试模型并检查 rocauc 分数时,当我使用 roc_auc_score 时会得到不同的值
我想评估我的机器学习模型。我使用 roc_auc_score() 计算了 ROC 曲线下的面积,并使用 sklearn 的 plot_roc_curve() 函数绘制了 ROC 曲线。在第二个函数中,
我正在尝试使用 sklearn 的 roc_auc_score() 函数计算多类问题的 AUC 分数。 我有形状为 [n_samples,n_classes] 的预测矩阵和形状为 [n_samples
我正在尝试确定 roc_auc_score用于验证集上的拟合模型。 我看到有关函数输入的一些相互矛盾的信息。 Documentation说: "y_score 类似数组的形状 (n_samples,)
刚接触 sklearn,请保持温柔。使用不同的 roc_auc 评分计算客户流失率,我得到 3 个不同的分数。分数 1 和 3 接近,分数与分数 2 之间存在显着差异。感谢您指导为什么会出现这种差异以
我对 cross_val_score 评分指标“roc_auc”和我可以直接导入和调用的 roc_auc_score 之间的区别感到困惑。 文档 ( http://scikit-learn.org/s
在某些情况下, tf.metrics.auc 产生的值与 sklearn.metrics.roc_auc_score 非常不同。 我无法确定这种情况的特殊性是什么,但我能够获得一个可重现的例子: 代码
我正在使用 逻辑回归 进行预测。我的预测是 0 和 1。在根据给定数据训练我的模型后,以及在训练重要特征时,即 X_important_train 请参见屏幕截图。我得到大约 70% 的分数,但是当我
我正在使用分层 10 折交叉验证来寻找模型,该模型从具有最高 auc 的 X(X 有 34 个标签)预测 y(二元结果)。我设置了 GridSearchCV: log_reg = LogisticRe
我是一名优秀的程序员,十分优秀!