如何使用matplotlib / python绘制ROC曲线

脑力衰竭

我想绘制一个ROC曲线pythonmatplotlib并想像这样显示它:

在此处输入图片说明

假设我们有0.0到1.0的预测y_score以及二进制0或1标签,y_test如何将其转换为ROC曲线?

我找不到在matplotlib中执行类似操作的函数。

有一个简单的方法吗?

Armatita

是的,但我认为没有直接的绘图命令可以执行此操作。因此,我建议您仅遵循Scikit-Learn食谱

import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.metrics import roc_curve, auc
from sklearn.cross_validation import train_test_split
from sklearn.preprocessing import label_binarize
from sklearn.multiclass import OneVsRestClassifier
from scipy import interp

# Import some data to play with
iris = datasets.load_iris()
X = iris.data
y = iris.target

# Binarize the output
y = label_binarize(y, classes=[0, 1, 2])
n_classes = y.shape[1]

# Add noisy features to make the problem harder
random_state = np.random.RandomState(0)
n_samples, n_features = X.shape
X = np.c_[X, random_state.randn(n_samples, 200 * n_features)]

# shuffle and split training and test sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.5,
                                                    random_state=0)

# Learn to predict each class against the other
classifier = OneVsRestClassifier(svm.SVC(kernel='linear', probability=True,
                                 random_state=random_state))
y_score = classifier.fit(X_train, y_train).decision_function(X_test)

# Compute ROC curve and ROC area for each class
fpr = dict()
tpr = dict()
roc_auc = dict()
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])

# Compute micro-average ROC curve and ROC area
fpr["micro"], tpr["micro"], _ = roc_curve(y_test.ravel(), y_score.ravel())
roc_auc["micro"] = auc(fpr["micro"], tpr["micro"])


##############################################################################
# Plot of a ROC curve for a specific class
plt.figure()
plt.plot(fpr[2], tpr[2], label='ROC curve (area = %0.2f)' % roc_auc[2])
plt.plot([0, 1], [0, 1], 'k--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic example')
plt.legend(loc="lower right")
plt.show()


##############################################################################
# Plot ROC curves for the multiclass problem

# Compute macro-average ROC curve and ROC area

# First aggregate all false positive rates
all_fpr = np.unique(np.concatenate([fpr[i] for i in range(n_classes)]))

# Then interpolate all ROC curves at this points
mean_tpr = np.zeros_like(all_fpr)
for i in range(n_classes):
    mean_tpr += interp(all_fpr, fpr[i], tpr[i])

# Finally average it and compute AUC
mean_tpr /= n_classes

fpr["macro"] = all_fpr
tpr["macro"] = mean_tpr
roc_auc["macro"] = auc(fpr["macro"], tpr["macro"])

# Plot all ROC curves
plt.figure()
plt.plot(fpr["micro"], tpr["micro"],
         label='micro-average ROC curve (area = {0:0.2f})'
               ''.format(roc_auc["micro"]),
         linewidth=2)

plt.plot(fpr["macro"], tpr["macro"],
         label='macro-average ROC curve (area = {0:0.2f})'
               ''.format(roc_auc["macro"]),
         linewidth=2)

for i in range(n_classes):
    plt.plot(fpr[i], tpr[i], label='ROC curve of class {0} (area = {1:0.2f})'
                                   ''.format(i, roc_auc[i]))

plt.plot([0, 1], [0, 1], 'k--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Some extension of Receiver operating characteristic to multi-class')
plt.legend(loc="lower right")
plt.show()

您会注意到,给出的图应如下所示:

Scikit-学习中华民国食谱

这并不是您所要求的样式,因此您应该修改matplotlib代码以包含以下内容:

import numpy as np
import matplotlib.pyplot as plt

x = [i for i in range(7)]
y = [i**2 for i in range(7)]
for i in range(1,len(x)):
    diffx = (x[i]-x[i-1])*0.15
    diffy = (y[i]-y[i-1])*0.15
    plt.plot((x[i-1]+diffx,x[i]-diffx),(y[i-1]+diffy,y[i]-diffy),color='black',linewidth=3)
    plt.scatter(x[i-1],y[i-1],marker='o',s=30,facecolor='white',edgecolor='black')

plt.plot((min(x),max(x)),(min(y),max(y)),color='red',linewidth=3,linestyle='--')

plt.show()

结果是:

matplotlib线图中的样式和功能

在您方便的时候适应。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用matplotlib / python绘制ROC曲线

来自分类Dev

如何使用 AUC 绘制 ROC 曲线?

来自分类Dev

如何绘制TrainCascadeObjectDetector生成的检测器的ROC曲线?

来自分类Dev

如何从给定值绘制rStudios中的ROC曲线?

来自分类Dev

如何为以下代码段绘制ROC曲线?

来自分类Dev

使用Python绘制蝴蝶曲线

来自分类Dev

在Python的matplotlib中从散点图绘制曲线?

来自分类Dev

对于多类情况,如何使用scikit learning绘制ROC曲线?

来自分类Dev

如何使用scikit-learn绘制二进制值的ROC曲线?

来自分类Dev

如何获得ROC曲线?

来自分类Dev

在Python MatPlotLib中使用动画时,如何更改绘制曲线的颜色?

来自分类Dev

如何在python的matplotlib上重新绘制一条曲线以获得乘法曲线图?

来自分类Dev

如何获得绘制遗传算法分类器的ROC曲线的分数?

来自分类Dev

如何在pROC中以置信区间绘制多个roc曲线?

来自分类Dev

IndexError:使用scikit-learn绘制ROC曲线时数组的索引过多?

来自分类Dev

在R中编写函数以使用pROC绘制ROC曲线

来自分类Dev

如何使用r中的ROCR软件包绘制ROC曲线*仅带有分类列联表*

来自分类Dev

如何使用Keras神经网络分类器在KFold交叉验证中绘制每个折叠的ROC_AUC曲线

来自分类Dev

使用 ImageDataGenerator 时如何生成 ROC 曲线

来自分类Dev

如何使用div绘制曲线?

来自分类Dev

如何使用Matplotlib Python绘制时间序列

来自分类Dev

使用scipy.interplote.interp1d和matplotlib Python 2.7 32位绘制圆滑曲线

来自分类Dev

绘制最近质心的 ROC 曲线

来自分类Dev

如何在python中绘制没有曲线的单个点?

来自分类Dev

使用DrawingContext绘制曲线

来自分类Dev

如何使用Matplotlib绘制具有非线性x轴刻度的曲线?

来自分类Dev

如何使用 matplotlib 在全息视图中绘制相同颜色的曲线和误差线?

来自分类Dev

Matplotlib:如何绘制没有图例的特定曲线?

来自分类Dev

Matplotlib:如何绘制没有图例的特定曲线?

Related 相关文章

  1. 1

    如何使用matplotlib / python绘制ROC曲线

  2. 2

    如何使用 AUC 绘制 ROC 曲线?

  3. 3

    如何绘制TrainCascadeObjectDetector生成的检测器的ROC曲线?

  4. 4

    如何从给定值绘制rStudios中的ROC曲线?

  5. 5

    如何为以下代码段绘制ROC曲线?

  6. 6

    使用Python绘制蝴蝶曲线

  7. 7

    在Python的matplotlib中从散点图绘制曲线?

  8. 8

    对于多类情况,如何使用scikit learning绘制ROC曲线?

  9. 9

    如何使用scikit-learn绘制二进制值的ROC曲线?

  10. 10

    如何获得ROC曲线?

  11. 11

    在Python MatPlotLib中使用动画时,如何更改绘制曲线的颜色?

  12. 12

    如何在python的matplotlib上重新绘制一条曲线以获得乘法曲线图?

  13. 13

    如何获得绘制遗传算法分类器的ROC曲线的分数?

  14. 14

    如何在pROC中以置信区间绘制多个roc曲线?

  15. 15

    IndexError:使用scikit-learn绘制ROC曲线时数组的索引过多?

  16. 16

    在R中编写函数以使用pROC绘制ROC曲线

  17. 17

    如何使用r中的ROCR软件包绘制ROC曲线*仅带有分类列联表*

  18. 18

    如何使用Keras神经网络分类器在KFold交叉验证中绘制每个折叠的ROC_AUC曲线

  19. 19

    使用 ImageDataGenerator 时如何生成 ROC 曲线

  20. 20

    如何使用div绘制曲线?

  21. 21

    如何使用Matplotlib Python绘制时间序列

  22. 22

    使用scipy.interplote.interp1d和matplotlib Python 2.7 32位绘制圆滑曲线

  23. 23

    绘制最近质心的 ROC 曲线

  24. 24

    如何在python中绘制没有曲线的单个点?

  25. 25

    使用DrawingContext绘制曲线

  26. 26

    如何使用Matplotlib绘制具有非线性x轴刻度的曲线?

  27. 27

    如何使用 matplotlib 在全息视图中绘制相同颜色的曲线和误差线?

  28. 28

    Matplotlib:如何绘制没有图例的特定曲线?

  29. 29

    Matplotlib:如何绘制没有图例的特定曲线?

热门标签

归档