svmLight格式

时间:2016-06-01 14:44:36

标签: python format svm svmlight

我对svmLight数据格式中每个部分的含义感到非常困惑。 例如:

(标签/目标,[(特征,价值),...],queryid)

标签是指数据的等级,queryid是对象的ID吗?

例如: 对于以下项目:

2 qid:1 1:4.000000 2:2.772589 3:0.266667 4:0.258154 5:37.330565 6:11.431241 7:37.307017 8:1.213630 9:21.342267 10:10.842279 11:15.634736 12:2.749495 13:-39.467448 14: - 37.791635 15:-38.002289 16:14.000000 17:5.634790 18:0.063927 19:0.063290 20:28.303065 21:9.340024 22:24.809801 23:0.231553 24:52.396216 25:1.692954 26:16.619600 27:2.810583 28:-45.733775 29:-44.612550 30 :-44.823263 31:18.000000 32:6.579251 33:0.076923 34:0.076079 35:27.701632 36:9.139690 37:23.819476 38:0.277200 39:67.283604 40:1.847508 41:19.559974 42:2.973485 43:-44.687666 44:-43.467574 45: - 43.302044 #docid = 346319

2表示对象的等级/目标值吗?那么qid或docid对文件的意义是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

领先的数字确实是"目标"这个对象。 qid:1部分用于约束这些对象之间的成对差异。 docid,或者最后#之后的所有内容都是

的信息字符串
  

可用于将附加信息传递给内核(例如非特征向量数据)

source)。

每个对象的一般格式在官方来源的标题下提供,"如何使用":

<line> .=. <target> <feature>:<value> <feature>:<value> ... <feature>:<value> # <info>
<target> .=. +1 | -1 | 0 | <float> 
<feature> .=. <integer> | "qid"
<value> .=. <float>
<info> .=. <string> 

请注意您指定的格式

(label/target, [(feature, value), ...], queryid)

pysvmlight的一个,是我绑定到Thorsten Joachims制作的SVM-Light支持向量机库的Python,我之前引用过。您需要编写一个解析器来将svmlight本机的数据文件解析为pysvmlight使用的格式。 StackOverflow上至少有one example,即使它没有考虑qid,但是当你阅读解析器的代码时,它不应该太难添加。