5

我正在开发一个时间序列预测系统。我为 Java 购买了 Book of Encog3,但我需要知道 hot 才能提交一个包含 3 列的 CSV 文件并尝试预测第二列。CSV 定义如下:

Date, DeviceConsumption,TotalPower

我需要将该文件加载到加载器中,然后指定我要预测的列(即DeviceConsumption)。第三列用于提供更多信息并创建模式。

在示例中(如太阳黑子)我看到

TemporalMLDataSet result = new TemporalMLDataSet(windowSize,1);
TemporalDataDescription desc = new TemporalDataDescription(new ActivationSIN(),Type.RAW, false, true);

result.addDescription(desc);

但是我在哪里可以定义我想要预测的列??

谢谢你。

编辑 2 我做了一些改进:

对不起,但我还是不明白。正如你所说,我能够创建 2 TemporalDataDescription。但是我必须将两者都添加到同一个 TemporalMLDataSet 中吗?

TemporalMLDataSet result = new TemporalMLDataSet(WINDOW_SIZE,1);
TemporalDataDescription desc = new TemporalDataDescription(
TemporalDataDescription.Type.RAW,true,true);
    result.addDescription(desc);
TemporalDataDescription desc2 = new TemporalDataDescription(
TemporalDataDescription.Type.RAW,false,true);
    result.addDescription(desc2);

    for(int year = TRAIN_START;year<TRAIN_END;year++)
    {
        TemporalPoint point = new TemporalPoint(2);
        point.setSequence(year);
        point.setData(0, this.deviceConsumption[year]);
        point.setData(1, this.TotalPower[year]);
        result.getPoints().add(point);

    }
    result.generate();

这是对的吗?

EDIT3前面的代码是正确的!

4

1 回答 1

2

使用 TemporalMLDataSet 时,您为训练集中需要的每个值创建一个 TemporalDataDescription 对象。因此,对于您的数据集,您将有两个 TemporalDataDescription 对象。一个用于 DeviceConsumption,一个用于 TotalPower。最后的两个布尔值允许您指定预测列。您可以将 DeviceConsumption 设置为输入和输出,并将 TotalPower 设置为仅输入。MLDataSet 并不真正了解 Data 列,您只需将其设置为数值递增的值,例如太阳黑子示例的工作方式。

列可以标记为输入和/或输出。输入列用于预测,输出列是您要预测的内容。单个列可以(并且通常是)输入和输出。太阳黑子的例子就是这种情况,上面的数据也是这种情况。

于 2013-04-18T01:24:24.603 回答