我已经使用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曲线?
谢谢。
答案 0 :(得分:0)
ROC曲线只是在不同的概率阈值下绘制TP(真正)与FP(假正)的曲线。因此,如果这是一个二进制分类问题,那么您只需更改测试数据集预测的概率阈值即可获得TP-FP率。本质上,创建一个具有三列的表:[Prob Threshold, TP, FP]
并将其绘制出来。您需要使用model.predict_proba(...)
来按类别获取概率,然后使用它来创建ROC曲线。
对于多类别,它会有些棘手。您虽然有一些选择。您可以绘制每个类别的ROC曲线(一个案例与多个案例),实质上是将主要类别与所有其他类别进行二值化。另外,对于多类别,您可以执行attempts的操作,并创建微平均ROC曲线或宏观平均ROC曲线。