有没有办法发送数据来在Vowpal Wabbit中训练模型而不写入磁盘?从Vowpal Wabbit的内存中读取数据?
这是我正在尝试做的。我有一个相对较大的csv数据集(大约2GB),适合内存,没有问题。我将它加载到数据框中,并且我有一个函数可以将该数据框中的数据转换为VW格式。
现在,为了训练模型,我必须先将转换后的数据写入文件,然后将该文件提供给VW。写入磁盘部分的时间太长,尤其是因为我想尝试使用不同的功能转换的各种模型,因此我必须多次将数据写入磁盘。
因此,假设我能够在R中创建一个字符向量,其中每个元素都是VW格式的一行数据,那么如何将它写入VW而无需将其写入磁盘?
我考虑过使用守护进程模式和写作的特征向量到本地主机连接,但在守护进程模式我不能让大众来列车 - 我不知道这甚至有可能。
如果需要,我愿意使用C++(通过Rcpp包)来完成这项工作。
非常感谢您提前。
UPDATE:
谢谢大家的帮助。如果任何人的兴趣,我只是管道输出到大众作为回答表明,像这样:
# Two sample rows of data
datarows <- c("1 |name 1:1 2:4 4:1", "-1 |name 1:1 4:1")
# Open connection to VW
con <- pipe("vw -f my_model.vw")
# Write to connection and close
writeLines(datarows, con)
close(con)
非常感谢。为了澄清,如果我使用“保存”虚拟示例技巧,保存的模型将基于发送到该守护进程的所有示例,直到该点,对吧? – user3856970
是的,保存的模型将基于发送到该守护进程的所有示例(如同在线学习一样,后面的示例更多地影响模型)。 –