当你使用 NaN 作为 LIBSVM 的特征值时会发生啥?

Posted

技术标签:

【中文标题】当你使用 NaN 作为 LIBSVM 的特征值时会发生啥?【英文标题】:What happens when you use NaN as a feature value to LIBSVM?当你使用 NaN 作为 LIBSVM 的特征值时会发生什么? 【发布时间】:2012-11-26 13:52:41 【问题描述】:

我从 Matlab 计算的数据对于某些相关特征有很多 NaN。 我的分类预测输出很糟糕,所以我想知道这是否与问题有关。 LIBSVM 会接受 NaN 作为有效输入吗?

【问题讨论】:

我不清楚 NaN 的确切位置。 NaN 是特征值。因此,在 LIBSVM 格式中,它可能看起来像:-1 1:NaN 2:0.52 3:0.5554 等。 不知道 libsvm 但通常 NaN 不能是相关性。为什么不通过将所有 NaN 替换为 0 来移动它们?此外,您可能想了解它们的来源,因为这可能不是一个好兆头,您有很多。 【参考方案1】:

你提到的输入格式如下。

-1 1:NaN 2:0.52 3:0.5554

但是,这种输入格式是无效的,因为您只能在 LibSVM 输入中使用数值。

如果缺少某些值,则需要从输入中排除,例如:

-1 2:0.52 3:0.5554

在这种情况下,缺失特征的特征值被视为零:

-1 1:0 2:0.52 3:0.5554

【讨论】:

以上是关于当你使用 NaN 作为 LIBSVM 的特征值时会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Python 对 Spark 中的 LIBSVM 文件进行特征选择和缩减?

为啥在 Weka 中使用 libsvm 时会出现“NoClassDefFoundError:libsvm/svm_print_interface”错误?

如何使用libsvm进行回归预测

如何使用libsvm进行回归预测

SelectKBest 将分数作为 nan 值

Libsvm 分类 MATLAB