时间序列预测包含从CSV读取的3个java

时间:2013-04-17 14:29:19

标签: java csv time-series encog

我正在开发一个时间序列预测系统。 我买了适用于Java的Encog3书,但我需要知道热点提交 包含3列的CSV文件,并尝试预测第二列。 CSV定义如下:

DateDeviceConsumptionTotalPower

我需要将该文件加载到加载器中,然后指定我想要预测的列(即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 以前的代码是正确的!

1 个答案:

答案 0 :(得分:2)

使用TemporalMLDataSet时,您可以为训练集中所需的每个值创建一个TemporalDataDescription对象。因此,对于您的数据集,您将拥有两个TemporalDataDescription对象。一个用于DeviceConsumption,一个用于TotalPower。最后的两个布尔值允许您指定预测列。您可以将DeviceConsumption设置为input&amp;输出,并将TotalPower设置为仅输入。 MLDataSet实际上并不知道的数据列,您只需将其设置为数值增加的值,例如太阳黑子示例的工作原理。

列可以标记为输入和/或输出。输入列用于预测,输出列是您尝试预测的。单列可以(通常是)输入和输出。太阳黑子的例子就是这种情况,上述数据也是如此。