Я пытаюсь создать кривую ROC для моего набора данных изображений, и для этого мне нужно преобразовать набор данных в двоичную форму. Набор данных, который я использую, является набором данных Retinal OCT. Но я теряюсь, когда пытаюсь преобразовать набор данных в двоичную форму для построения графика ROC.
Я делаю классификатор, используя PyTorch для 4 классов, используя resnet и распечатывая Train и test loss вместе с Accuracy. Но после того, как я узнаю о матрице путаницы, точность может не дать нам должного результата, если у нас более двух классов. Теперь я вычисляю Чувствительность (fpr) и Специфичность (tpr) набора данных и пытаюсь напечатать график ROC, используя эти параметры. Я следую этому уроку от Scikit-Learn, чтобы распечатать это -
https://scikit -learn.org / стабильный / 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 или нет. Спасибо.