问题描述
我想绘制 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
解决方法
根据 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-learn 分类器都有 predict_proba
方法,因为这些模型的计算概率并不总是合理的定义。在这种情况下,请尝试使用 decision_function
方法:
confidence = classifier.decision_function(X_test)