我的模型在 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 中预测所有正类到负类的主要内容,如果未能解决你的问题,请参考以下文章

如何将 MATLAB libsvm 模型复制到 android 应用程序文件夹

关于libsvm工具箱在64位matlab下的安装说明

MATLAB安装libsvm工具箱的方法

如何在matlab里安装libsvm包

matlab里用Libsvm得到模型但是无法得到预测精度

请问Matlab的libsvm工具箱如何进行多元回归?