LIBSVM 数据准备:将 Excel 数据转换为 LIBSVM 格式

Posted

技术标签:

【中文标题】LIBSVM 数据准备:将 Excel 数据转换为 LIBSVM 格式【英文标题】:LIBSVM Data Preparation: Excel data to LIBSVM format 【发布时间】:2017-03-19 02:45:47 【问题描述】:

我想研究如何执行 LIBSVM 进行回归,我目前正忙于准备数据。目前我有这种 .csv 和 .xlsx 格式的数据,我想把它转换成 libsvm 数据格式。

到目前为止,我了解数据应该是这种格式,以便可以在 LIBSVM 中使用:

根据我阅读的内容,对于回归,“标签”是可以是任何实数的目标值。

我正在进行电力负荷预测研究。谁能告诉我它是什么?最后,我应该如何组织我的列和行?

【问题讨论】:

【参考方案1】:

LIBSVM 数据格式由下式给出:

如您所见,这形成了一个矩阵 [(IndexCount + 1) 列,LineCount 行]。更准确地说是一个稀疏矩阵。如果您为 each index 指定一个值,则您有一个 dense 矩阵,但如果您只指定几个索引,如 <label> <5:value> <8:value>,则只有索引 58 当然label 将有一个自定义值,所有其他值都设置为0。这只是为了符号简单或节省空间,因为数据集可能很大。

对于标签的含义,我引用ReadMe file:

如您所见,label 是您要预测的数据。 index 标记您的数据及其value功能。特征只是与您的目标值相关联或关联的指标,因此可以做出更好的预测。

完全虚构故事时间:Gabriel Luna(一个完全虚构的角色)想要预测他未来几天的能量消耗。他发现,前一天的室外温度是一个很好的指标,因此他选择索引为1Temperature 作为特征重要提示: 索引总是从一开始,零有时会导致奇怪的 LIBSVM 行为。然后,他惊讶地注意到,一周中的某一天(周一到周日或 06)也会影响他的负载,因此他选择它作为第二个功能,索引为 2 . LIBSVM 的矩阵行现在具有以下格式:

<myLoad_Value> <1:outsideTemperatureFromYesterday_Value> <2:dayOfTheWeek_Value>

Gabriel Luna(他是夜间的蝙蝠侠)现在在几周内捕获这些数据,可能看起来像这样(负载以 kWh 为单位,温度以°C 为单位,如上所述的白天):

0.72 1:25 2:00.65 1:21 2:10.68 2:29 2:2...

注意,由于 稀疏矩阵 格式,我们可以省略 2:0。这将是您训练 LIBSVM 模型的训练数据。然后,我们预测明天的负载如下。你知道今天的温度,让我们说23°C,今天是星期二,即1,所以明天是2。所以,这是与模型一起使用的线或向量:

0 1:23 2:2

在这里,您可以任意设置<label> 的值。它将被预测值覆盖。我希望这会有所帮助。

【讨论】:

哇!非常感谢这个非常全面的解释.. 我对 libsvm 的数据格式一无所知,但这真的帮助我理解它.. 非常感谢! 网络上最好的解释之一。当我尝试使用 SVM 构建模型时,libSVM 格式有何重要意义?我不能只是缩放数据并通过算法运行它以获得经过训练的模型吗? @thatguy,我想我遗漏了一些东西......索引特征对应关系是否保存在不同的文件中?对我来说,libsvm 文件中只使用任意索引似乎很奇怪......

以上是关于LIBSVM 数据准备:将 Excel 数据转换为 LIBSVM 格式的主要内容,如果未能解决你的问题,请参考以下文章

LIBSVM 如何准备带有图像的训练数据集以进行徽标检测?

在带有 Excel 数据的 Matlab 中使用 lbsvm

将带有分类数据的 csv 转换为 libsvm

将数据帧转换为 libsvm 格式

将分类数据转换为数字并保存为 libsvm 格式 python

准备我的数据以在 SVM libsvm matlab 中进行训练 [关闭]