使用以下内容,我能够将原始预测和最终预测作为文件获取:
cat train.vw.txt | vw -c -k --passes 30 --ngram 5 -b 28 --l1 0.00000001 --l2 0.0000001 --loss_function=logistic -f model.vw --compressed --oaa 3
cat test.vw.txt | vw -t -i model.vw --link=logistic -r raw.txt -p predictions.txt
但是,当我将VW作为守护进程运行时,我无法获得原始预测:
vw -t -i model.vw --daemon --port 26542 --link=logistic
我是否有特定参数或参数的传递来获取原始预测?我更喜欢原始预测,而不是最终预测。感谢
答案 0 :(得分:2)
在支持/dev/stdout
(和/dev/stderr
)的系统上,您可以尝试这样做:
vw -t -i model.vw --daemon --port 26542 --link=logistic -r /dev/stdout
守护进程将原始预测写入标准输出,在这种情况下最终与localhost端口26542位于同一位置。
行的相对顺序是有保证的,因为在每个示例中处理不同打印的代码(例如非原始与原始)始终是串行的。
答案 1 :(得分:2)
从November 2015开始,获取概率的最简单方法是使用--oaa=N --loss_function=logistic --probabilities -p probs.txt
。 (或者,如果您需要依赖于标签的功能:--csoaa_ldf=mc --loss_function=logistic --probabilities -p probs.txt
。)
--probabilities
也与--daemon
合作。不再需要使用--raw_predictions
。
答案 2 :(得分:1)
--raw_predictions
是一种hack(语义取决于使用的减少量),--daemon
模式不支持它。 (--output_probabilities
之类的东西会很有用而且不难实现,它可以在守护进程模式下工作,但到目前为止还没有人有时间实现它。)
作为一种解决方法,您可以在管道中运行VW,因此它会读取stdin并将概率写入stdout:
cat test.data | vw -t -i model.vw --link=logistic -r /dev/stdout | script.sh
答案 3 :(得分:0)
根据https://github.com/VowpalWabbit/vowpal_wabbit/issues/1118,您可以尝试在命令行中添加--scores
选项:
vw --scores -t -i model.vw --daemon --port 26542
它对我的oaa模型有帮助。