我最近在Kaggle上尝试了此多分类问题
这些是标签的value_counts()
:
2 1661772
4 1613640
8 1471098
5 1389385
9 1361200
3 1337218
7 1325075
6 1316784
10 1250655
1 1240152
0 1240152
现在,我知道它不平衡了,所以首先我需要知道如何平衡它
我还需要分块读取文件,因为我只有16 GB的内存,还不够 所以我用过:
data_chunks = pd.read_csv(filename, chunk_size=1024)
data = next(iter(data_chunks))
,变量data
包含1024个元素,并且所有标签均为零,这对零构成了严重威胁,因为我的模型只是训练为所有内容返回零
所以我需要知道如何在read_csv()
函数中
预先感谢
PS:我只是从真实的数据集开始,而不是scikit-learn
上的玩具数据集,如果我犯了任何菜鸟错误,请原谅
答案 0 :(得分:1)
嘿,您可以使用样本(分数= 0.20) 这将从您的csv中随机提取20%的数据,您可以进行相应的调整
data_chunks = pd.read_csv(filename).sample(frac = 0.20)
答案 1 :(得分:1)
data_chunks = pd.read_csv(filename, chunk_size=1024)
for chunk in data_chunks:
process(chunk)
通过这样做,您可以访问所有块,现在,您可以通过多种方式选择平衡类数据集,方法是创建一个具有所有相等类的新数据帧,以对这些块进行验证。
我也建议对无法直接加载到内存的大型数据帧使用DASK。它不会更改pandas语法,并且在大型数据帧上就像一个吊饰一样!