快速回顾一下我想做的事情,我想确定文本是否由同一作者撰写。因此,我使用一类分类。
在我的训练集中(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)


有人可以告诉我我做错了什么吗?

最佳答案

您需要调整参数。

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值缩放测试数据。

关于machine-learning - libsvm的一类分类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22194321/

10-09 10:05