pandas 读写 csv文件

博主在Kaggle比赛的分类任务中,本地验证集准确率达60+%,但提交测试结果仅百分之一。经检查发现训练时程序按字符顺序读取,标签存在问题。之后将之前结果下载,要把预测标签变换到正确结果,接下来需进行CSV的读写操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缘起

在 kaggle 比赛的一个分类任务上,在本地验证集的准确率有 60+% 的准确率,但提交上去的测试结果却只有百分之一。
在这里插入图片描述
今日重新检查结果,终于发现了大大的 bug,原来在训练的时候程序是按照字符顺序读的:

'0', '1', '10', '100', '101', '102', '103', '104', '105', '106', '107', '108', '109', '11', '110', '111', '112', '113', '114', '115', '116', '117', '118', '119', '12', '13', '14', '15',...

而朕给的标签确是:

0, 1, 2, 3, 4, 5,...

虽然在本地训练时,验证集和训练集是一致的,但提交答案是显然行不通了。

因此,朕把之前的结果下载回来,把预测标签变换到正确的结果,即做如下变换:

0 => 0
1 => 1
2 => 10
3 => 100
4 => 101
5 => 102
6 => 103
7 => 104
8 => 105
9 => 106
10 => 107
11 => 108
12 => 109
13 => 11
...

要找到这个变换很容易:

l = []
for i in range(120): # 120 类
    l.append(str(i))
l.sort()
trans = [int(i) for i in l]
for i,d in enumerate(trans):
    print('{} => {}'.format(i,d))

接下来要做的就是读写 csv 了。

读写 csv

import pandas as pd

# read
csv_data = pd.read_csv('...xxx.csv')  # 读取训练数据
csv_data.head()

在这里插入图片描述

# transform
cat = list(csv_data["Category"])
trans_cat = [trans[i] for i in cat]
csv_data["Category"] = trans_cat

# write 
csv_data.to_csv("...xxx_new.csv",  
           index=False,
           columns=['Id', 'Category'],
           encoding='utf-8')
csv_data.head()

在这里插入图片描述
ok

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颹蕭蕭

白嫖?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值