Python 直线的ROC曲线

Python 直线的ROC曲线,python,matplotlib,scikit-learn,svm,Python,Matplotlib,Scikit Learn,Svm,我目前正在努力为LinearSVC模型绘制ROC曲线。由于LinearSVC模型只能调用decision_function()来计算y_分数(与通常的predict_proba()相反),我发现很难为每个类计算fpr和tpr。尝试时 for i in range(n_classes): fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i]) roc_auc[i] = auc(fpr[i], tpr[i]) 我得到索引

我目前正在努力为
LinearSVC
模型绘制ROC曲线。由于
LinearSVC
模型只能调用
decision_function()
来计算y_分数(与通常的
predict_proba()
相反),我发现很难为每个类计算
fpr
tpr
。尝试时

for i in range(n_classes):
    fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i])
    roc_auc[i] = auc(fpr[i], tpr[i])
我得到
索引器错误:数组的索引太多
。切换到回答中提供的解决方案将意味着增加标签,这是我希望避免的。具有线性内核的普通
SVC
模型不允许我为基于l1的特征选择设置l1惩罚,因此也要避免这种情况


关于如何解决这个问题,有什么想法吗?

ROC曲线本身的定义表明,它描绘了二元分类器的特征。如果您想将其扩展到多类问题,显而易见的方法是使用回答中提到的
OneVsRestClassifier
。你不想使用这种方法有什么具体原因吗?@panktijk我不是OP,但面临着同样的问题。问题不在于多类,而在于分类器不返回概率,而只是最终的分类结果。看来sclearn的函数无法处理这些问题。有一个好的构建方式吗?@panktijk我自己的问题