Libsvm - 预测结果为 NULL

Posted

技术标签:

【中文标题】Libsvm - 预测结果为 NULL【英文标题】:Libsvm - predicted results are NULL 【发布时间】:2014-06-04 13:41:07 【问题描述】:

我正在使用 LibSVM (3.18)。但是每次我预测结果时,它都会给出零。

我正在遵循以下说明:

我有 csv 文件(+20K 行),列(目标)中的大部分数据为零,其他值在 0-10 之间。 我通过选择此列作为标签将 csv 文件转换为 libsvm 数据。

当我缩放数据时,我使用这些参数

$ svm-scale -l 0 -u 1 data.cv>scaled.data

由于我的文件很大,所以我使用 Subset.py。

当我完成所有步骤并应用预测时。我得到了很好的准确性结果。 $svm-predict scaled_data.csv model.train data.predicted

准确率 = 94.28%

但我得到的文件(data.predicted)只包含零。

预测这种数据是否棘手?有什么办法可以解决这个问题吗?

【问题讨论】:

能否请您发布您使用的代码?可能是前几行输入? 是的,这是一个棘手的问题。解决它的常用方法是对少数类进行过采样,使其具有与多数类一样多的样本。我自己从未使用过原始 LibSVM,但看起来 -wi 选项可以解决这个问题。 但是当我使用权重标志时;这有多准确,因为我们正在用不存在的积极结果重新影响数据集?有没有其他方法可以解决这个问题。 【参考方案1】:

首先了解您的数据。这些类是可分离的还是几乎不可分离的?还是完全未知?您可以使用 NN 分类器来确定您的类是否是聚类的。其次,避免使用subset.py,因为您可能会错过大多数非零样本并使用整个集合。如果您仍然失败,请手动执行一个子集,其中“零”类样本的数量在其他非零类的范围内,以验证您的过程(您是使用随附的工具还是自己的代码?)。如果这行得通,您可以再次从整套开始并使用重量选项。如果权重起作用,您必须仔细评估您的Confusion matrix,您的分类器是否对您的要求有用。

【讨论】:

以上是关于Libsvm - 预测结果为 NULL的主要内容,如果未能解决你的问题,请参考以下文章

R e1071 预测与 libsvm 不同

LibSVM 预测精度

我的模型在 libsvm 工具箱 matlab 中预测所有正类到负类

LIBSVM 对未训练类的样本给出相同的预测。为啥?

基于Libsvm的图像分类

基于Libsvm的图像分类