我最近得到的数据集对于我的RAM来说太大了。 我必须用英语把它分块读
pd.read_csv('filename.csv', chunksize=1024)
数据集中的所有标签都是连续的,也就是说,所有的零加在一起,一加二。 每个标签有12000个,所以每个区块都有0个或1个或2个
我的问题是,即使我使用randomize
和test_train_split
,我的列车数据中仍然会得到所有相同的标签。
因此,我的模型学习为任何输入输出一个值。
恒定输出取决于随机种子。我需要知道如何修复这个错误
编辑: 这是所要求的代码
data_in_chunks = pd.read_csv(data_file, chunksize=4096)
data = next(iter(data_in_chunks)
X = data.drop(['labels'], axis=1)
Y = data.labels
X_train, X_val, Y_train, Y_val = train_test_split(X, Y, stratify=Y, random_state=0) # train test random state has no effect
for i in iter(data_in_chunks):
train(i) # this is just simplified i used optim in the actual code
换言之,4096是我能处理的最高的chunksize
我的16 Gig ram,由于所有标签的顺序性,所有的Y_train
和Y_test
只有0,或1或2(所有可能的输出)
请帮忙 提前谢谢
您可以通过使用诸如https://github.com/alexandres/terashuf之类的实用程序随机洗牌磁盘上的.csv来解决标签顺序问题,具体取决于您的操作系统
编辑
只使用熊猫和标准库的解决方案可以使用
skiprows
参数实现请注意,虽然每个区块中包含的行将从csv中随机取样,但熊猫会按照原始顺序读取它们。如果您正在使用批数据块来训练模型,那么您可能需要考虑随机化每个子集数据帧,以避免在同一个问题中出现。p>
相关问题 更多 >
编程相关推荐