2013-04-17 14 views
5

Opracowuję system do prognozowania szeregów czasowych. Kupiłem książkę Encog3 dla Javy, ale muszę znać ją na gorąco, aby przesłać plik CSV z 3 kolumnami i spróbować przewidzieć drugą kolumnę. CSV jest zdefiniowany następująco:Prognozowanie szeregów czasowych enogog 3 java read from CSV

Date, DeviceConsumption, TotalPower

muszę załadować ten plik do ładowarki i niż określić kolumnę chcę do przewidzenia (czyli DeviceConsumption). Trzecia kolumna służy do dostarczenia większej ilości informacji i stworzenia wzorca.

W przykładach (jak plamy słonecznej) Widzę

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

result.addDescription(desc); 

ale gdzie mogę zdefiniować kolumnę, którą chcę się przewidzieć ??

Dziękuję.

EDIT 2 Zrobiłem kilka ulepszeń:

Niestety ale ja nadal nie rozumiem. Udało mi się utworzyć 2 TemporalDataDescription, jak powiedziałeś. Ale czy muszę dodać oba do tego samego pliku 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(); 

Czy to prawda?

EDIT3 Poprzedni kod był poprawny!

Odpowiedz

2

Podczas korzystania z obiektu TemporalMLDataSet należy utworzyć obiekt TemporalDataDescription dla każdej wartości, która ma być w zestawie szkoleniowym. Tak więc dla zestawu danych masz dwa obiekty TemporalDataDescription. Jeden dla DeviceConsumption i jeden dla TotalPower. Dwa booleans na końcu pozwalają ci określić przewidywaną kolumnę. Użytkownik ustawił DeviceConsumption na dane wyjściowe na & i ustawił TotalPower tak, aby tylko wprowadzał. Kolumna Dane, której MLDataSet nie jest w pełni świadoma, wystarczy ustawić ją na wartość rosnącą liczbowo, na przykład, jak działa przykład plam na Słońcu.

Kolumny można oznaczyć jako wejścia i/lub wyjścia. Kolumny wejściowe służą do przewidywania, kolumny wyjściowe są tym, co próbujesz przewidzieć. Pojedyncza kolumna może (i często jest) zarówno wejściowa, jak i wyjściowa. Tak jest w przypadku plam na Słońcu, i tak też jest w powyższych danych.

+0

Przepraszam, ale wciąż nie rozumiem. Udało mi się utworzyć 2 TemporalDataDescription, jak powiedziałeś. Ale czy muszę dodać oba do tego samego pliku TemporalMLDataSet? – vincenzodentamaro

+1

Okay, dodałem najczęściej zadawane pytania dotyczące tego produktu wraz z przykładem. Tak, w tym celu stworzysz dwa TDD i dodasz oba do zestawu. Przykład tutaj ma dwa wejścia, tak jak tutaj, a jeden służy tylko do wprowadzania danych. http://www.heatonresearch.com/faq/3/1 – JeffHeaton

+0

dziękuję Jeff, chciałbym opublikować rozwiązanie tutaj. Czy mogę to zrobić? – vincenzodentamaro

Powiązane problemy