我是libsvm的新手。我无法理解libsvm的输出。我只是想知道你如何找到所有支持向量的alpha_i?参数model.sv_coef
是否为您提供alpha_i
或alpha_i*y_i
?我想问的另一个主要问题是model.SVs
给出了什么?我在matlab中使用libsvm,当我查找model.SVs
时,我得到的输出是:
我的训练集是:
-1 1:0.747253 2:0.894737
+1 1:0.692308 2:-0.824561
-1 1:0.362637 2:0.789474
+1 1:0.769231 2:-0.321637
我的测试集:
-1 1:-0.351648 2:-0.602339
+1 1:-0.21978 2:-0.263158
var1=model.sv_indices
>>var1 =
2
4
3
model.SVs
>>ans =
(1,1) 2.0000
(2,1) 4.0000
(3,1) 3.0000
(1,2) -0.2204
(2,2) 0.2870
(3,2) 0.9774
(1,3) 1.1592
(2,3) 0.7978
(3,3) -0.3999
(1,4) -0.3999
(2,4) 0.0250
(3,4) 0.7548
(1,5) 0.7978
(2,5) 0.6952
(3,5) 0.0250
这些(1,1),(2,1),(3,1)......是什么?我的意思是我只有4个训练集,那么第二个索引如何变为5个而且只有两个测试集,那么第一个索引如何变为3。
答案 0 :(得分:2)
model.sv_coef
包含所有alpha_i * y_i
,model.SVs
是所有支持向量x_i
。权重可以写为
w = model.SVs' * model.sv_coef;
b = -model.rho;
您可能不需要太在意(1,2),(1,3)的标签...... m.nSV
将为您提供每个类的支持向量的数量。由于您只有两个类,因此答案应该是2*1
向量,每行代表相应类的支持向量编号。有关详细信息,请查看此document。