【发布时间】:2019-06-01 04:36:33
【问题描述】:
我正在尝试使用卷积神经网络 (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
labels.append(label)
img_class = model.predict_classes(img)
img_class_probability = model.predict(img)
prediction_probability = img_class_probability[0]
prediction_probabilities.append(prediction_probability)
prediction = img_class[0]
if prediction == label:
correct_classification = correct_classification + 1
number_of_test_images = number_of_test_images + 1
fpr, tpr, thresholds = roc_curve(labels, prediction_probabilities)
auc_value = auc(fpr, tpr)
我想问一下为什么我的 AUC = 0.5?也许我做错了什么?
谢谢。
【问题讨论】:
-
您是否计算过其他指标,例如准确性、敏感性、特异性以及您获得的分数?
-
@Suleiman 感谢您的友好回复。我计算了准确率,大约是 77%。但是,似乎预测的类别都是相同的(即总是“黑色素瘤”)。
-
您的代码似乎不包含模型。请向我们展示构建和训练模型的代码(包括学习参数初始化器和优化器的选择)
-
如果你的模型总是预测一个类别并且你有一个平衡的数据集,即相同数量的痣和黑色素瘤,那么这将解释为什么 AUC = 0.5
标签: python tensorflow keras roc auc