在 Python 中为 RidgeClassifier 绘制 ROC 曲线

问题描述

我想绘制 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

解决方法

根据 documentationRidge.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-learn 分类器都有 predict_proba 方法,因为这些模型的计算概率并不总是合理的定义。在这种情况下,请尝试使用 decision_function 方法:

confidence = classifier.decision_function(X_test)