libsvm的一个类分类

时间:2014-03-05 09:58:29

标签: machine-learning svm libsvm supervised-learning

快速回顾一下我想做什么,我想确定一个文本是否是由同一个作者写的。因此我使用一类分类。
在我的训练集(18个样本)中,它看起来像这样(为了简化,我用x作为数据值):

1 1:x 2:x "until" 200:x
1 1:x 2:x "until" 200:x

在我的测试集(3个样本)中,它看起来像这样(为了简化,我用y作为数据值):

1 1:y 2:y "until" 200:y

对于数据准备(训练和测试集),我将上限和下限缩放设置为+ 1 / -1

-l -1 -u 1

对于训练,我使用svm_type是一个类svm,内核类型是Sigmoid。但准确度为0%

optimization finished, #iter = 13
obj = 22.901769047004553, rho = 5.476401914859387
nSV = 11, nBSV = 6
Accuracy = 0.0% (0/21) (classification)

有人能告诉我这里我做错了什么吗?

1 个答案:

答案 0 :(得分:1)

您需要调整参数。

nu是训练误差分数的上限和支持向量分数的下限。通过这样的设置,基本上可以拒绝数据nu(例如0.01表示1%),并将其标记为异常值。

还尝试在Sigmoid内核中调整gammacoef0值。

虽然它可能不是导致零训练准确性的直接因素,但我建议您自己缩放数据而不是libsvm的最大 - 最小缩放,请检查standard scaling

 x_mean = mean(x);
 x_std = std(x);
 x = (x - x_mean)./x_std;

然后使用相同的x_meanx_std值来扩展测试数据。