Прогнозиране на времеви редове encog 3 java четене от CSV

Разработвам система за прогнозиране на времеви редове. Купих Book of Encog3 за Java, но трябва да знам, за да изпратя CSV файл с 3 колони и да се опитам да предвидя втората колона. 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 Предишният код беше правилен!


person vincenzodentamaro    schedule 17.04.2013    source източник


Отговори (1)


Когато използвате TemporalMLDataSet, вие създавате обект TemporalDataDescription за всяка от стойностите, които искате в набора за обучение. Така че за вашия набор от данни ще имате два обекта TemporalDataDescription. Един за DeviceConsumption и един за TotalPower. Двете булеви стойности в края ви позволяват да посочите прогнозираната колона. Бихте задали DeviceConsumption на input & output и TotalPower на само input. Колоната с данни, която MLDataSet всъщност не познава, просто трябва да я зададете на числово нарастваща стойност, като например как работи примерът със слънчевите петна.

Колоните могат да бъдат маркирани като входни и/или изходни. Входните колони се използват за прогнозиране, изходните колони са това, което се опитвате да предвидите. Една колона може (и често е) както вход, така и изход. Такъв е случаят с примера със слънчевите петна и такъв е случаят и в данните по-горе.

person JeffHeaton    schedule 18.04.2013
comment
Съжалявам, но пак не разбирам. Успях да създам 2 TemporalDataDescription, както казахте. Но трябва ли да добавя и двете към същия TemporalMLDataSet? - person vincenzodentamaro; 18.04.2013
comment
Добре, добавих ЧЗВ за този елемент, допълнен с пример. Да, за това трябваше да създадете два TDD и да ги добавите и двата към комплекта. Примерът тук има два входа, точно както имате тук, и единият се използва само за въвеждане. heatonresearch.com/faq/3/1 - person JeffHeaton; 19.04.2013
comment
благодаря ти Джеф, бих искал да публикувам решението тук. Мога ли да го направя? - person vincenzodentamaro; 19.04.2013
comment
Да, не се колебайте да публикувате решението тук. - person JeffHeaton; 19.04.2013
comment
Джеф, ако се опитам да предскажа следващите 7 дни, като вмъкна 7 вместо 1 (като изходен неврон), трябва ли да променя размера на прозореца? и ще имам ли влошаване на качеството на прогнозиране?? Мерси - person vincenzodentamaro; 19.04.2013
comment
Прогнозирането на повече дни изисква промяна в размера на изходния прозорец. Колкото по-голям е прозорецът за прогнозиране, толкова по-трудно е често. Можете също да използвате по-голям прозорец за прогнозиране и да осредните резултатите, за да се опитате да получите обща тенденция. - person JeffHeaton; 20.04.2013