使用R加载大型训练数据
使用R加载大型训练数据
这个问题已经在此处有答案:
我有以下代码行:
train <- read.csv("avito_train.tsv", sep='\t', stringsAsFactors = F)
培训文件大约为3 GB。 加载所有数据需要很长时间。
我的问题是,合适的数据科学家是否会加载所有数据还是只使用子集? 我注意到我可以使用nrows
参数来指定要读取的最大行数。
我还相信将所有这些数据加载到语料库中(就像我必须这样做)可能非常耗时。 是否有关于使用大型培训和测试数据编写机器学习程序的推荐策略的共识?
admin 更改状态以发布 2023年5月21日
有多种方法可以在R中优化数据加载。你告诉R的数据结构越多,它就越快地加载它。具体而言,如果你能告诉它有多少列,每列的数据类型是什么,如果你还知道数据有多少行,R会更容易地加载它。
这是一个例子,我试图提高文件加载的速度。首先,我获取文件中的列数:
ncols <- length(read.table(file,header=TRUE,sep="\t", nrows=1, na.strings=c("null","NA"),comment="",quote=""))
在这个特定的文件中,我知道我不想要前两列,其他都是数字,所以我使用了以下read.table调用:
tumor_data <- read.table(file,header=TRUE,sep="\t", colClasses=c("NULL","NULL",rep("numeric",ncols-2)), na.strings=c("null","NA"),comment="",quote="")
请注意,这个文件并不像你的那么大,所以我想加载一个3Gb的文件仍然需要一些时间。你可以看看这个页面上的答案,我觉得这对你有帮助:Quickly reading very large tables as dataframes in R,如果read.table不适合你,你可能要考虑使用sqldf包或类似的东西。