我想使用LIBSVM(不在MATLAB中)计算点与超平面之间的距离。我试着遵循这些指示,但我想我失败了。 http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#f4151
有人成功更改了svm.cpp以计算点与超平面之间的距离吗?如果你这样做,你能解释我怎么样?
我非常感谢您提供的任何帮助。
答案 0 :(得分:0)
从GitHub上找到的libsvm代码,您有:
{
double v = 0;
int i;
for(i=0;i<l;i++)
v += alpha[i] * (G[i] + p[i]);
si->obj = v/2;
}
website上的说明说:
所以新代码将是:
{
double v = 0;
int i;
for(i=0;i<l;i++)
v += alpha[i] * (G[i] + p[i]);
si->obj = v/2;
double sum_alpha = 0;
for (int i = 0; i<l; ++i) {
sum_alpha += alpha[i];
}
double w_square = 2*(si->obj + sum_alpha);
double w = sqrt(w_square);
printf("The value for abs(w) is %f \n", w);
}