从libsvm模型文件中提取系数/权重

时间:2017-02-01 14:30:39

标签: machine-learning svm libsvm

我正在使用libsvm来创建一个2类分类器。 我希望提取由svm_type c_svc kernel_type rbf gamma 8 nr_class 2 total_sv 442 rho 21 label 1 -1 nr_sv 188 254 SV 7080.357768871263 0:0 1:0.00643 2:0.01046 3:0.00963 4:0.02777 5:0.04338 19:0.04468 528.7111702760092 0:0 1:0.00058 3:0.00086 6:0.01158 7:0.0028 9:0.08991 13:0.0096 ... 391.7649705739246 0:0 1:0.00055 3:0.00082 5:0.04615 7:0.06374 21:0.00374 31:0.00339 33:0.00395 38:0.16343 ... -564.1329424321915 0:0 1:0.00709 2:0.00384 3:0.00709 5:0.00399 9:0.01457 10:0.01244 11:0.0206 17:0.02124 20:0.00565 23:0.00846 27:0.04692 33:0.04271 35:0.02389 36:0.00859 39:0.02014

生成的模型使用的每个特征的系数/权重

svm-predict [options] test.test model.model out.out文件如下所示:

<input class="not-icheck" value="I'm a rebel!" />
...
<script>
    $(function()
    {
        $('input:not(.not-icheck)').iCheck();
    });
</script>

我如何知道{ "_id":"test", "_rev":"2-test", "data":"some additional fields with info about the image", "_attachments": { "foo.jpg": { "stub":true, "content_type":"image/jpeg", "length":23721 } } } 将使用哪些系数/权重?最后一行的那些?

谢谢, 微米。

1 个答案:

答案 0 :(得分:2)

LIBSVM生成的模型文件根据官方FAQ entry包含以下信息:

  

在模型文件中,经过参数和其他信息之后   标签,每一行代表一个支持向量。   支持向量按照&#34;标签&#34;的顺序列出。如前所示。 (即那些来自   &#34;标签中的头等舱&#34;列表首先分组,依此类推。)如果是k   是类中的总数,在类中的支持向量前面   j,有k-1个系数y * alpha,其中alpha是双解   以下两个类问题:1 vs j,2 vs j,...,j-1 vs j,j vs    j + 1,j vs j + 2,...,j vs k和y = 1在第一个j-1系数中,y = -1 in   剩余的k-j系数。例如,如果有4个类,   该文件看起来像:

+-+-+-+--------------------+
|1|1|1|                    |
|v|v|v|  SVs from class 1  |
|2|3|4|                    |
+-+-+-+--------------------+
|1|2|2|                    |
|v|v|v|  SVs from class 2  |
|2|3|4|                    |
+-+-+-+--------------------+
|1|2|3|                    |
|v|v|v|  SVs from class 3  |
|3|3|4|                    |
+-+-+-+--------------------+
|1|2|3|                    |
|v|v|v|  SVs from class 4  |
|4|4|4|                    |
+-+-+-+--------------------+

还有example如何读取此数据以便为二进制分类器计算w