使用sklearn的accuracy_score计算准确率时,2d array与1d array的结果不同

背景

今天在做多标签分类任务时,使用了accuracy_score计算预测准确率,然而却出现了训练集的准确率不断上升,验证集的准确率始终保持在很低的情况,因此对这种现象进行了分析

数据分布?

一开始我认为时训练集和验证集之间的数据分布不同,但是在多次改变train_test_splitrandom_seed,调整test_size大小,改变验证集等方法后,结果仍然很低,因此排除了这种可能

归一化?

数据中存在负值,而模型采用relu激活函数,忽略了负值的影响,因此我使用sklearn的StandardScaler进行了归一化,结果仍然很低,排除了归一化的影响

变量名?

我甚至一度怀疑是变量名的问题,在对验证集进行测试的时候,重用了训练集的变量名,结果仍然很低,排除这种影响

最终找到accuracy_score

在这里插入图片描述
在使用accuracy_score之前,我着实没有想到输入的y_true和y_pred竟然是1维向量,这下子就可以明白了,1维的时候比较的是每个值是否一样,而输入是2维的时候,比较的是每个一维向量是否完全相等,而不是对每个值进行比较,这就导致了训练时准确率不断上升,而验证集始终停留在较低值的位置。训练集在训练时可以完全拟合到正确值,而验证集总会存在一两个错误,导致整个样本的标签预测错误。由于本次任务是多标签分类任务,一个样本存在多个标签,因此即使只正确1个标签,准确率也并非0。

总结

在使用sklearn的一些方法时,应该看清楚输入的维度,想要方便,使用矩阵计算,最终因为使用错误,浪费了一个上午

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值