【问题标题】:Libsvm - predicted results are NULLLibsvm - 预测结果为 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 选项可以解决这个问题。
  • 但是当我使用权重标志时;这有多准确,因为我们正在用不存在的积极结果重新影响数据集?有没有其他方法可以解决这个问题。

标签: python csv libsvm


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-02-25
    • 2013-12-29
    • 2013-12-29
    • 2015-11-26
    • 2017-07-08
    • 2015-01-07
    • 2013-03-12
    • 2011-05-31
    • 1970-01-01
    相关资源
    最近更新 更多