Machine learning 无法将单例数组(<;torch.utils.data.dataloader.dataloader对象位于0x7f47667cda20>;,dtype=object)视为有效集合

Machine learning 无法将单例数组(<;torch.utils.data.dataloader.dataloader对象位于0x7f47667cda20>;,dtype=object)视为有效集合,machine-learning,scikit-learn,roc,Machine Learning,Scikit Learn,Roc,我正在尝试使用Scikit学习打印一个多类ROC曲线,用于我的4类分类集。我在google Colab中使用它。我一直在跟踪。当我试着这么做的时候- # Compute ROC curve and ROC area for each class fpr = dict() tpr = dict() roc_auc = dict() for i in range(n_classes): fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:

我正在尝试使用Scikit学习打印一个多类ROC曲线,用于我的4类分类集。我在google Colab中使用它。我一直在跟踪。当我试着这么做的时候-

# Compute ROC curve and ROC area for each class
fpr = dict()
tpr = dict()
roc_auc = dict()
for i in range(n_classes):
    fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i])
    roc_auc[i] = auc(fpr[i], tpr[i])

# Compute micro-average ROC curve and ROC area
fpr["micro"], tpr["micro"], _ = roc_curve(y_test.ravel(), y_score.ravel())
roc_auc["micro"] = auc(fpr["micro"], tpr["micro"])
我知道我需要对输出/测试数据进行二值化。所以,我做了这个-

from google.colab import drive
drive.mount('/content/drive')
data = "/content/drive/My Drive/AMD_new"


import torch
import helper
from torch import nn
from torch import optim
import torch.nn.functional as F
from torchvision import datasets, transforms, models
import torchvision.models as models

from torchvision import datasets ,transforms

#Changning the transform of the data-
transform_train = transforms.Compose([transforms.RandomHorizontalFlip(),
                                     transforms.RandomResizedCrop(224),
                                     # transforms.CenterCrop(224),
                                     transforms.ToTensor(),
                                     transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
                                     ])

transform_test = transforms.Compose([transforms.RandomHorizontalFlip(),
                                     transforms.RandomResizedCrop(224),
                                     # transforms.CenterCrop(224),
                                     transforms.ToTensor(),
                                     transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
                                     ])

# choose the training and test datasets
train_data = datasets.ImageFolder(data+"/train", transform=transform_train)
test_data = datasets.ImageFolder(data+"/val", transform = transform_test)

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)

# Binarize the output
dataloader_test = label_binarize(dataloader_test, classes=[0, 1, 2, 3])
nb_classes = dataloader_test.shape[1]
但有一个错误,我无法解决

E: Package 'python-software-properties' has no installation candidate
··········
fuse: mountpoint is not empty
fuse: if you are sure this is safe, use the 'nonempty' mount option
Drive already mounted at /content/drive; to attempt to forcibly remount, call drive.mount("/content/drive", force_remount=True).
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-11-f3ce2af1dde4> in <module>()
     56 dataloader_test = torch.utils.data.DataLoader(test_data, batch_size=32, num_workers=2)
     57 # Binarize the output
---> 58 dataloader_test = label_binarize(dataloader_test, classes=[0, 1, 2, 3])
     59 nb_classes = dataloader_test.shape[1]

/usr/local/lib/python3.6/dist-packages/sklearn/preprocessing/label.py in label_binarize(y, classes, neg_label, pos_label, sparse_output)
    579         # XXX Workaround that will be removed when list of list format is
    580         # dropped
--> 581         y = check_array(y, accept_sparse='csr', ensure_2d=False, dtype=None)
    582     else:
    583         if _num_samples(y) == 0:

/usr/local/lib/python3.6/dist-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
    575     shape_repr = _shape_repr(array.shape)
    576     if ensure_min_samples > 0:
--> 577         n_samples = _num_samples(array)
    578         if n_samples < ensure_min_samples:
    579             raise ValueError("Found array with %d sample(s) (shape=%s) while a"

/usr/local/lib/python3.6/dist-packages/sklearn/utils/validation.py in _num_samples(x)
    140         if len(x.shape) == 0:
    141             raise TypeError("Singleton array %r cannot be considered"
--> 142                             " a valid collection." % x)
    143         # Check that shape is returning an integer or default to len
    144         # Dask dataframes may not return numeric shape[0] value

TypeError: Singleton array array(<torch.utils.data.dataloader.DataLoader object at 0x7f47667cda20>,
      dtype=object) cannot be considered a valid collection.
E:包“python软件属性”没有安装候选程序
··········
保险丝:挂载点不为空
保险丝:如果您确定这是安全的,请使用“非空”安装选项
驱动器已安装在/content/Drive;要尝试强制重新装载,请调用drive.mount(“/content/drive”,force\u remount=True)。
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
56 dataloader\u test=torch.utils.data.dataloader(测试\u数据,批量大小=32,工人数量=2)
57#对输出进行二值化
--->58数据加载器测试=标签二值化(数据加载器测试,类=[0,1,2,3])
59 nb_类=数据加载程序_测试。形状[1]
/标签二值化中的usr/local/lib/python3.6/dist-packages/sklearn/preprocessing/label.py(y、类、负标签、位置标签、稀疏输出)
579#XXX解决方案,当列表格式列表为
580#下降
-->581 y=检查数组(y,接受sparse='csr',确保2d=False,dtype=None)
582其他:
583如果_num_samples(y)==0:
/检查数组中的usr/local/lib/python3.6/dist-packages/sklearn/utils/validation.py
575 shape_repr=_shape_repr(array.shape)
576如果确保最小样本数>0:
-->577 n_样本=_num_样本(数组)
578如果n_样本<确保最小样本:
579 raise VALUETERROR(“发现数组中有%d个样本(形状=%s),而a”
/样本中的usr/local/lib/python3.6/dist-packages/sklearn/utils/validation.py(x)
140如果len(x.shape)==0:
141 raise TypeError(“无法考虑单例数组%r)”
-->142“有效的集合。”%x)
143#检查shape是否返回整数或len的默认值
144#Dask数据帧可能不会返回数字形状[0]值
TypeError:单例数组(,
dtype=object)不能被视为有效集合。
请帮我克服这一点。我一直遵循以下帖子- 谢谢