如何使用vowpal wabbit进行在线预测(流模式)

时间:2015-06-17 05:18:02

标签: vowpalwabbit

我正在尝试使用Vowpal Wabbit进行一项具有154种不同类别标签的多类分类任务,如下所示:

  1. 训练有大量数据的大众汽车模型​​。
  2. 使用一个专用测试集测试模型。
  3. 在这种情况下,我能够达到> 80%的结果,这很好。但目前我正在研究的问题是:

    我必须复制实时预测方案。在这种情况下,我必须一次传递一个数据点(即文本行),以便模型可以预测值和输出。

    我已经尝试了所有我知道但失败的选项。您是否可以通过将一个数据点与VW命令一起传递而不是作为文件来告诉我如何创建实时场景。

1 个答案:

答案 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个回复。保证请求与响应的顺序相对顺序。