我正在尝试使用Vowpal Wabbit进行一项具有154种不同类别标签的多类分类任务,如下所示:
在这种情况下,我能够达到> 80%的结果,这很好。但目前我正在研究的问题是:
我必须复制实时预测方案。在这种情况下,我必须一次传递一个数据点(即文本行),以便模型可以预测值和输出。
我已经尝试了所有我知道但失败的选项。您是否可以通过将一个数据点与VW命令一起传递而不是作为文件来告诉我如何创建实时场景。
答案 0 :(得分:5)
您可以使用vw
作为守护程序:
vw --daemon --port 54321 --quiet -i model_file -t --num_children 1
现在vw
加载模型并侦听端口54321(在localhost上)。每次发送一行(以换行符结尾,ASCII 10)到localhost:54321
时,您都会在同一个套接字上得到预测,例如:
echo " | your features here..." | netcat localhost 54321
这只是一个例子,通常你会写一个程序,它会在循环中写入然后从套接字读取,而不是调用netcat
。
您还可以在常规输入/输出和预测模式中调用vw
:
vw --quiet -i model_file -t -p /dev/stdout
并写入(通过stdin
)并从中读取(通过stdout
)。关键是,您将以相同的顺序为您发送的每一行输入获得一行输出。您也可以一次发送N
行,然后回读N
个回复。保证请求与响应的顺序相对顺序。