【发布时间】:2014-09-08 20:27:41
【问题描述】:
我在 Matlab 中使用 libsvm 对具有 5 个类的数据集进行分类。这里的数据是二维的,但我认为这并不重要。
每个类的测试数据量是平衡的。对于训练数据,当我为每个类使用 5 个训练样本时,分类结果很好。但是,当我将一个类(比如第 2 类)的训练数据数量从 5 更改为 10 时,分类准确度很差,尤其是第 2 类。
我使用的代码很简单:
model = svmtrain2(trainLabels, trainData );
[LabelSVM] = svmpredict2(testLabels, testData, model);
是因为svmtrain2 中有我应该指定的选项吗?还是其他原因造成的?谢谢。
【问题讨论】:
-
看看this question 是否有帮助。基本上有一些方法可以在 scikit-learn(建立在 libsvm 上)中处理数据集中的不平衡,但似乎没有一个方法可以直接通过 libsvm 获得。您可以自己滚动,但 scikit-learn 选项似乎运行良好。
-
你能给出数据的二维图吗?也许我们可以提取一些有用的信息来帮助你解决问题。
-
您好,我上传了数据,没什么特别的。带圆圈的数据是训练数据。我仍然不明白为什么训练数据中的一个小不平衡会导致严重的问题。
标签: matlab machine-learning svm libsvm