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的主要内容,如果未能解决你的问题,请参考以下文章