我在Java中使用LibSVM,如下所示:
LibSVM classifier = new LibSVM();
classifier.setCost(C);
我有兴趣从分类器中获取权重w
和参数b
,以便在线性内核的情况下表征分离超平面:
w^T x + b = 0
我看过some other questions建议如何在MATLAB或其他语言中执行此操作。但是,我不清楚如何在Java中执行此操作。如果您选择documentation,则会找到方法getWeights()
,通过阅读名称,应该返回权重列表。但是,因为:
double[]
而不是String
)目前尚不清楚这些是我正在寻找的权重w
和b
。
我看到here其他用户遇到同样的问题,但他没有找到问题的答案。
感谢。
答案 0 :(得分:0)
在您提供的文档中,它表示getWeights()
返回的字符串是一个包含权重的字符串(由空格分隔的双精度数)。
所以这应该有效:
String a = classifier.getWeights();
String[] weightsString = a.split(' ');
double[] weights = new double[a.length];
for(int i =0; i< a.length; i++)
weights[i] = Double.valueOf(weightsString[i]);