vin*_*aro 5 java csv time-series encog
我正在开发一个时间序列预测系统.我买了Book of Encog3 for Java,但我需要知道热,提交一个包含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);
Run Code Online (Sandbox Code Playgroud)
但是我在哪里可以定义我想要预测的列?
谢谢.
编辑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();
Run Code Online (Sandbox Code Playgroud)
这是对的吗?
EDIT3以前的代码是正确的!
使用 TemporalMLDataSet 时,您可以为训练集中所需的每个值创建一个 TemporalDataDescription 对象。因此,对于您的数据集,您将有两个 TemporalDataDescription 对象。一种用于设备消耗,另一种用于总功率。最后的两个布尔值允许您指定预测列。您可以将 DeviceConsumation 设置为输入和输出,并将 TotalPower 设置为仅输入。MLDataSet 并不真正了解数据列,您只需将其设置为数字递增的值,例如太阳黑子示例的工作原理。
列可以标记为输入和/或输出。输入列用于预测,输出列是您要预测的内容。单个列可以(并且通常)既可以输入也可以输出。太阳黑子的例子就是这种情况,上面的数据也是这种情况。