ValueError: multiclass format is not supported
找到报错的位置
def compute_auc(pred, label):
if isinstance(pred, torch.Tensor):
pred = pred.cpu().detach().numpy().flatten()
if isinstance(label, torch.Tensor):
label = label.cpu().detach().numpy().flatten()
fpr, tpr, thresholds = metrics.roc_curve(label, pred)#报错位置
return metrics.auc(fpr, tpr)
参考博客,打印看看roc_curve的参数的数据类型:
from sklearn.utils.multiclass import type_of_target
print(type_of_target(pred)) #continuous
print("------------")
print(type_of_target(label)) #multiclass
然后将这个参数的类型修改为 list 或者 ndarray
但是debug看看这个函数。发现这两个数据就是ndarray。
报错位置:
问题可能出现在label上面,有三个数值,是个多分类,然后roc曲线一般是做二分类的,多分类一般用混淆矩阵来做。我的本意是二分类,那么我就检查一下的label数据发现有一个数据标签打成了2改为1就可以了。
python文件读写
参考博客open()是python的内置函数,返回一个文件对象,这个对象拥有read、readline、write、close等方法。官方定义如下:
open('file','mode') #file需要打开的文件路径 mode(可选)打开文件的模式,省略时默认r模式
示列代码:
open("model/m.pkl","r") #只能读取
open("model/m.pkl","w") #只能写入
open("model/m.pkl","a") #源文件末尾追加内容
open("model/m.pkl","w+") #读写双重操作
open("model/m.pkl","rb") #以二进制格式打开一个文件,用于只读
open("model/m.pkl","wb") #以二进制格式打开一个文件,用于只写
open("model/m.pkl","ab") #以二进制格式打开一个文件,用于追加
open("model/m.pkl","w+b") #以二进制格式打开一个文件,用于读写
关于创建读写的表格如下:
需要注意的点:
with open(“model/m.pkl”,“wb”)as f: #就算报错文件也可以得到正确的关闭
f.close() #关闭文件并立即释放它使用的所有系统资源
resount=f.read() #读取所有的数据
data=f.readline() #读取第一行的所有数据
data=f.readline(4) #读取第5个数据,标签符号也算
#readline方法会记住上一个readline函数读取的位置,接着读取下一行。
result=f.readlines() #返回的是所有行组成的列表,每行数据多一个'\n'
f.write("hello") # 写入“hello”