我的模型在 libsvm 工具箱 matlab 中预测所有正类到负类
Posted
技术标签:
【中文标题】我的模型在 libsvm 工具箱 matlab 中预测所有正类到负类【英文标题】:my model is predicting all positive class to negative class in libsvm toolbox matlab 【发布时间】:2013-02-19 05:26:40 【问题描述】:我在 Matlab 中使用 libsvm 工具箱创建了一个分类器。它将所有正类数据分类为负类,反之亦然。我在进行交叉验证时得到了很好的结果,但是在测试一些数据时,我发现分类器的工作方式错误。我似乎无法弄清楚问题出在哪里。
谁能帮我解决这个问题。
【问题讨论】:
分类器的预测是否完全相反?如果是,那么这将是一个评估问题。 感谢您的回复。是的,它预测完全相反。请告诉我如何解决它。 这意味着训练中的类别0变成了类别1(错误地)。它只是一个评估问题。检查您是否在训练和测试中遵循了完全相同的协议。你会在某个地方发现错误。 非常感谢。我没有明白你所说的“协议”是什么意思。我检查了我的输入文件,它们没问题,我正在使用 matlab libsvm。在那里我只需要提供数据,剩下的就交给他们了。我只使用命令来训练数据集、创建模型、在该模型上测试数据集。在这里我应该提到,我使用相同的数据集进行训练和测试。例如,如果我使用 1-900 个实例进行训练,则使用其余 400 个实例进行测试。如果您能再帮我一些忙,我将不胜感激。我真的被困住了。 @syeda-firdaus:我理解正确吗:你的准确率正好是 0%? 【参考方案1】:当第一个训练示例的(二进制)标签为 -1 时,这是 libsvm 先前版本的“功能”。最简单的解决方案是获取最新版本 (> 3.17)。
更多详情请看这里:http://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html#f430
【讨论】:
这就是答案。谢谢【参考方案2】:假设您有 500 个训练实例。 250 将是正数,其他为负数。现在在测试集中,与正例具有相同特征的实例将被预测为正例。但是,当您向 LIBSVM 提供测试标签(您必须提供测试标签以便 LIBSVM 可以计算准确性,它们显然不会用于预测算法)时,您已经提供了完全相反的标签(错误地)。所以你有一种感觉,你预测的标签已经完全相反了。因为对于二元分类问题,即使是随机分类器也有 50% 的准确率。
【讨论】:
非常感谢您的回复。我总共有 1600 个实例,443 个带有正面标签,其余的带有负面标签。从我使用 300 个阳性作为训练集和其余 143 个数据集进行测试的那些中。我保留了用于测试标签的数据。我使用 400 个负例进行训练,使用 200 个数据集进行测试。最后,当我使用所有 343 dbataset 进行测试时。所有正面和负面都已正确标记。经过测试,我得到了完全相反的结果。 like poisities 被预测为负数,反之亦然。请您进一步帮助我。以上是关于我的模型在 libsvm 工具箱 matlab 中预测所有正类到负类的主要内容,如果未能解决你的问题,请参考以下文章