Python 如何平滑ROC曲线?
我用下面的代码为不同的分类器绘制ROC曲线,但是在所有的图中(来自不同的分类器),图表都是三角形的,如下面的示例所示。我怎样才能有一个更平滑的绘图Python 如何平滑ROC曲线?,python,classification,roc,auc,Python,Classification,Roc,Auc,我用下面的代码为不同的分类器绘制ROC曲线,但是在所有的图中(来自不同的分类器),图表都是三角形的,如下面的示例所示。我怎样才能有一个更平滑的绘图 def plot_roc_curve(fpr, tpr, classifier): plt.plot(fpr, tpr, color='orange', label='ROC') plt.plot([0, 1], [0, 1], color='darkblue', linestyle='--') plt.xlabel('Fal
def plot_roc_curve(fpr, tpr, classifier):
plt.plot(fpr, tpr, color='orange', label='ROC')
plt.plot([0, 1], [0, 1], color='darkblue', linestyle='--')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title(str(classifier) + 'Receiver Operating Characteristic (ROC) Curve ')
plt.legend(loc="lower right")
plt.show()
from sklearn.metrics import roc_curve
fpr, tpr, thresholds = roc_curve(y_test, y_predicted)
plot_roc_curve(fpr, tpr, key)
我得到的:
我想要什么:
数据集:
您正在使用阈值预测生成ROC曲线。应改为使用原始置信值,否则在曲线上只能得到1个中间点 下面是一些示例数据和您将获得的ROC曲线
y_test: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, ...
y_predicted: [1, 0.405, 0.601, 0.579, 0.03, 0.98, 0.06, 0.242, 0.379, 0.09, ...
y_predicted_thresholded: [1, 0, 1, 1, 0, 1, 0, 0, 0, 0, ...
您正在使用阈值预测生成ROC曲线。应改为使用原始置信值,否则在曲线上只能得到1个中间点 下面是一些示例数据和您将获得的ROC曲线
y_test: [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, ...
y_predicted: [1, 0.405, 0.601, 0.579, 0.03, 0.98, 0.06, 0.242, 0.379, 0.09, ...
y_predicted_thresholded: [1, 0, 1, 1, 0, 1, 0, 0, 0, 0, ...
ROC曲线的形状取决于
y\u测试、y\u预测的内容,我们不知道这是从哪里来的。那么我如何像预期的图表那样标记点呢?对于您输入的数据,这就是曲线。同样,您没有显示y\u测试,y\u预测的包含的内容。我只能猜测样本数量非常少。哦,对不起,我已在编辑中添加了数据集。y\u predicted
需要非阈值化,即,您应该向其提供原始置信值0.0…1.0
。否则,ROC曲线(将不同置信阈值下的行为可视化)就毫无意义。ROC曲线的形状取决于y\u测试、y\u预测的内容,我们不知道这是从哪里来的。那么,我如何像预期图那样标记点呢?对于您输入的数据,这就是曲线。同样,您没有显示y\u测试,y\u预测的包含的内容。我只能猜测样本数量非常少。哦,对不起,我已在编辑中添加了数据集。y\u predicted
需要非阈值化,即,您应该向其提供原始置信值0.0…1.0
。否则,ROC曲线(显示不同置信阈值下的行为)毫无意义。