Python 如何根据这些数据绘制ROC曲线?

Python 如何根据这些数据绘制ROC曲线?,python,tensorflow,keras,evaluation,roc,Python,Tensorflow,Keras,Evaluation,Roc,我使用Keras训练了一个卷积神经网络(CNN),并进行了以下操作,以确定测试数据集的准确性: for root, dirs, files in os.walk(test_directory): for file in files: img = cv2.imread(root + '/' + file) img = cv2.resize(img,(512,512),interpolation=cv2.INTER_AREA) img = np

我使用Keras训练了一个卷积神经网络(CNN),并进行了以下操作,以确定测试数据集的准确性:

for root, dirs, files in os.walk(test_directory):
    for file in files:
        img = cv2.imread(root + '/' + file)
        img = cv2.resize(img,(512,512),interpolation=cv2.INTER_AREA)
        img = np.expand_dims(img, axis=0)
        img = img/255.0
        if os.path.basename(root) == 'nevus':
            label = 1
        elif os.path.basename(root) == 'melanoma':
            label = 0
        img_class = model.predict_classes(img)
        prediction = img_class[0]
        if prediction == label:
            correct_classification = correct_classification + 1
        print 'This is the prediction: '
        print prediction
        number_of_test_images = number_of_test_images + 1

print 'correct results:'
print correct_classification

print 'number of test images'
print number_of_test_images

print 'Accuray:'
print number_of_test_images/correct_classification * 100
在测试数据集上测试模型,有没有办法找到ROC曲线


谢谢。

ROC曲线只是一条曲线,在不同的概率阈值下绘制TP(真阳性)和FP(假阳性)。因此,如果这是一个二进制分类问题,那么您可以简单地更改测试数据集预测的概率阈值,并获得TP-FP比率。基本上创建一个包含三列的表:
[Prob Threshold,TP,FP]
并绘制该表。您需要使用
模型。预测概率(…)
按类获取概率,然后使用该模型创建ROC曲线


对于多类,它变得有点棘手。不过你有一些选择。您可以为每个类绘制ROC曲线(一对多的情况),基本上将主要类与所有其他类进行二值化。或者,对于多类,您可以按照sklean的方法创建微观平均ROC曲线或宏观平均ROC曲线。

ROC曲线只是一条曲线,在不同的概率阈值下绘制TP(真阳性)与FP(假阳性)。因此,如果这是一个二进制分类问题,那么您可以简单地更改测试数据集预测的概率阈值,并获得TP-FP比率。基本上创建一个包含三列的表:
[Prob Threshold,TP,FP]
并绘制该表。您需要使用
模型。预测概率(…)
按类获取概率,然后使用该模型创建ROC曲线

对于多类,它变得有点棘手。不过你有一些选择。您可以为每个类绘制ROC曲线(一对多的情况),基本上将主要类与所有其他类进行二值化。或者,对于多类,您可以执行sklean的操作,创建微观平均ROC曲线或宏观平均ROC曲线。

可能重复的