0
点赞
收藏
分享

微信扫一扫

python代码错误解决办法

小布_cvg 2022-04-13 阅读 141
python学习

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”
举报

相关推荐

0 条评论