我正在尝试为我的图像数据集制作ROC曲线,为此,我需要对数据集进行二值化。我使用的数据集是视网膜OCT图像数据集。但是当我试图对数据集进行二值化以制作ROC图时,我迷失了。
我正在使用Resnet使用PyTorch对4个类别进行分类,并打印Train和测试损失以及Accuracy。但是在我了解了混淆矩阵之后,如果我们有两个以上的类,那么准确性可能无法为我们提供正确的结果。现在,我正在计算数据集的敏感度(fpr)和特异性(tpr),并尝试使用这些参数打印ROC图。我正在按照Scikit-Learn的本教程进行打印- https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc.html。 在那里,我看到首先必须对测试数据进行二值化,但是当我尝试这样做时,每次都会出错。
我正在Google Colab中完成整个程序,这就是我连接驱动器的方式-
from google.colab import drive
drive.mount('/content/drive')
data = "/content/drive/My Drive/AMD_new"
现在,我在Scikit Learn的网站上看到了此代码以对数据进行二值化-
# 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]
这是我的数据集和数据加载器-
# choose the training and test datasets
train_data = datasets.ImageFolder(data+"/train", transform=transform_train)
test_data = datasets.ImageFolder(data+"/val", transform = transform_test)
test_data = label_binarize(test_data, classes=[0, 1, 2, 3])
dataloader_train = torch.utils.data.DataLoader(train_data, batch_size=32, shuffle=True, num_workers=2)
dataloader_test = torch.utils.data.DataLoader(test_data, batch_size=32, num_workers=2)
当我尝试将test_data二进制化时,它给了我这个错误-
OSError: cannot identify image file <_io.BufferedReader name='/content/drive/My Drive/AMD_new/val/CNV/CNV-6294785-1.jpeg'>
在这一行test_data = label_binarize(test_data, classes=[0, 1, 2, 3])
你们中的任何一个都可以指导我如何对数据集进行二值化吗?我是否朝着正确的方向打印ROC图?对于这个Pytorch域,我是一个新手,这就是为什么我想知道我是否正以正确的方式获得ROC。谢谢。