LIBSVM 数据准备:Excel 数据到 LIBSVM 格式

LIBSVM Data Preparation: Excel data to LIBSVM format

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

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

根据我的阅读,对于回归,"label" 是目标值,可以是任何实数。

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

LIBSVM 数据格式为:

<label> <index1>:<value1> <index2>:<value2> ...
...
...

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

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

<label> is the target value of the training data. For classification, it should be an integer which identifies a class (multi-class classification is supported). For regression, it's any real number. For one-class SVM, it's not used so can be any number. is an integer starting from 1, <value> is a real number. The indices must be in an ascending order.

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

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

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

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

0.72 1:25 2:0
0.65 1:21 2:1
0.68 2:29 2:2
...

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

0 1:23 2:2

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