时间序列预测编码器3 java从CSV读取



我正在开发一个时间序列预测系统。我买了Java的Encog3的书,但我需要知道如何提交一个有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个temporaldatadesption。但是我是否需要将两者都添加到同一个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前面的代码是正确的!

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

列可以被标记为输入和/或输出。输入列是用来预测的,输出列是你想要预测的。单个列可以(而且经常是)既是输入又是输出。太阳黑子的例子就是这样,上面的数据也是这样。