我尝试使用libsvm和3D描述符来执行对象识别。到目前为止,我有7类对象,对于每个类别,我都有它的对象数量(及其pourcentage):
类别1. 492(14%)
类别2. 574(16%)
类别3. 738(21%)
类别4。 164(5%)
类别5。 369(10%)
类别6。 123(3%)
Category7。 1025(30%)
所以我总共有3585个物品。
我遵循了libsvm的实用指南。 这里有提醒:
一个。扩展培训和测试 B.交叉验证 C.培训 D.测试
我将数据分成培训和测试。 通过5交叉验证过程,我能够确定好的C和Gamma。
然而,我获得了不良结果(简历约为30-40,我的准确率约为50%)。
然后,我在考虑我的数据并发现我有一些不平衡的数据(例如类别4和6)。我发现在libSVM上有一个关于权重的选项。这就是为什么我现在想要设置好的权重。
到目前为止,我这样做了:
svm-train -c cValue -g gValue -w1 1 -w2 1 -w3 1 -w4 2 -w5 1 -w6 2 -w7 1
但结果是一样的。我确定不是这样做的好方法,这也是我问你一些帮助的原因。 我看到了关于这个主题的一些主题,但它们与二进制分类有关,而不是多类分类。 我知道libSVM正在做一个对抗一个" (所以这是一个二元分类器)但是当我有多个班级时,我不知道要处理它。
你能帮我吗?
提前感谢您的帮助。
答案 0 :(得分:1)
我以前遇到过同样的问题。我也尝试给他们不同的重量,这是不起作用的。
我建议您使用数据集的子集进行训练。
尝试使用大致相同数量的不同类别样本。您可以使用所有4类和6类样本,然后为每个其他类别选择约150个样本。
我使用这种方法,准确度确实提高了。希望这会对你有所帮助!