用Python绘制脊分类器的ROC曲线

2024-04-29 04:19:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为RidgeClassifier绘制ROC曲线。但是代码出现了一个错误:我在谷歌上搜索解决方案,结果将predict_proba更改为predict,但它不起作用

predY = classifier.predict_proba(X_test)

错误:

AttributeError: 'RidgeClassifier' object has no attribute 'predict_proba'

这就是我从predict中得到的:

IndexError: too many indices for array

Tags: 代码testobject错误绘制解决方案predict曲线
2条回答

根据documentation,一个Ridge.Classifier没有predict_proba属性。这一定是因为对象在拟合过程中自动拾取阈值

鉴于这些文档,我认为没有办法为这个模型绘制ROC曲线。幸运的是,您可以使用sklearn.linear_model.LogisticRegression并设置penalty='l2'。通过这样做,您正在设置一个RidgeClassifier所考虑的相同优化问题

from sklearn.linear_model import LogisticRegression

classifier = LogisticRegression(penalty='l2')
classifier.fit(X, y)
predY = classifier.predict_proba(X_test)

现在您可以将predY传递给sklearn.metrics.roc_curve

这里的问题是,并非所有scikit学习分类器都有predict_proba方法,因为这些模型的计算概率并不总是有一个合理的定义。在这种情况下,请改用decision_function方法:

confidence = classifier.decision_function(X_test)

相关问题 更多 >