Matlab libsvm - 无法找到矢量系数w

时间:2014-03-29 18:40:23

标签: matlab machine-learning

我的数据矩阵是1000x65K矩阵,包含500个正例和500个负例。我的标签是[ones(500,1); - 酮(500,1)];

我正在使用以下代码训练线性svm:

cost = 0.1;
epsilon = 2;
gamma = 0.1;
degree = 3;
coef0 = 0;

options_string = ['-s 0 -t 0 ' ' -c ' num2str(cost) ' -p ' num2str(epsilon) ' -g ' num2str(gamma) ' -d ' num2str(degree) ' -r ' num2str(coef0) ' -b 1'];
SVRModel = svm_train(data, labels , options_string);

我用google搜索了一下,发现系数向量w可以使用以下代码找到:

w = model.SVs' * model.sv_coef;

但这给了我一个标量,而不是系数的向量。

我也尝试过:

w = (SVRModel.sv_coef' * full(SVRModel.SVs));

有人可以澄清我如何找到矢量系数w?

谢谢,

吉尔。

1 个答案:

答案 0 :(得分:1)

我认为你在尝试将其作为Matlab中的一个内容时淹死了。你需要实现这个等式:

equation

所以w就像是

w = zeros(1,65000);
for i=1:1000,
    w = w + model.sv_coef(i)*model.SVs(i,:)
end

Matlab将为您提供一个很好的工作,让您知道不匹配的尺寸。一旦你完成了写作,一个班轮不会很难,但重要的是理解计算,而不是一个班轮。