sap*_*ico 15 python validation machine-learning roc scikit-learn
TLDR:scikit的roc_curve功能仅为某个数据集返回3个点.为什么会这样,我们如何控制多少积分才能回来?
我正试图绘制一条ROC曲线,但始终得到一个"ROC三角形".
lr = LogisticRegression(multi_class = 'multinomial', solver = 'newton-cg')
y = data['target'].values
X = data[['feature']].values
model = lr.fit(X,y)
# get probabilities for clf
probas_ = model.predict_log_proba(X)
Run Code Online (Sandbox Code Playgroud)
只是为了确保长度合适:
print len(y)
print len(probas_[:, 1])
Run Code Online (Sandbox Code Playgroud)
两者都返回13759.
然后运行:
false_pos_rate, true_pos_rate, thresholds = roc_curve(y, probas_[:, 1])
print false_pos_rate
Run Code Online (Sandbox Code Playgroud)
返回[0. 0.28240129 1.]
如果我调用threasholds,我得到数组([0.4822225,-0.5177775,-0.84595197])(总是只有3分).
因此,我的ROC曲线看起来像三角形并不奇怪.
我无法理解的是为什么scikit roc_curve只返回3分.非常感谢.
小智 5
我遇到了同样的问题,仔细阅读文档后我意识到错误在于:
probas_ = model.predict_log_proba(X)
Run Code Online (Sandbox Code Playgroud)
不过,其他人通过检查唯一性也指出了一些提示。应该是:
probas_ = model.decisions(X)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5807 次 |
| 最近记录: |