2013-04-17 18 views
5

Sto sviluppando un sistema per la previsione delle serie temporali. Ho acquistato Book of Encog3 per Java, ma ho bisogno di sapere hot per inviare un file CSV con 3 colonne e tentare di prevedere la seconda colonna. Il CSV è definito come segue:Encog di previsione delle serie temporali 3 java leggere da CSV

Date, DeviceConsumption, TotalPower

ho bisogno di caricare il file in un caricatore e di specificare la colonna che voglio prevedere (cioè DeviceConsumption). La terza colonna viene utilizzata per fornire maggiori informazioni e creare un modello.

Negli esempi (come macchie solari) Vedo

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

result.addDescription(desc); 

ma dove posso definire la colonna che voglio prevedere ??

Grazie.

EDIT 2 ho fatto alcuni miglioramenti:

dispiace, ma io ancora non capisco. Sono stato in grado di creare 2 TemporalDataDescription come hai detto. Ma devo aggiungere entrambi allo stesso 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(); 

È corretto?

EDIT3 Il codice precedente era corretto!

risposta

2

Quando si utilizza TemporalMLDataSet, si crea un oggetto TemporalDataDescription per ciascuno dei valori desiderati nel set di allenamento. Quindi per il tuo set di dati avresti due oggetti TemporalDataDescription. Uno per DeviceConsumption e uno per TotalPower. I due booleani alla fine ti permettono di specificare la colonna prevista. Impostare DeviceConsumption per immettere l'output & e impostare TotalPower su input. La colonna Data di cui MLDataSet non è realmente a conoscenza, è sufficiente impostarla su un valore che aumenta numericamente, ad esempio come funziona l'esempio delle macchie solari.

Le colonne possono essere contrassegnate come input e/o output. Le colonne di input sono utilizzate per prevedere, le colonne di output sono ciò che stai cercando di prevedere. Una singola colonna può (e spesso è) sia input che output. Questo è il caso dell'esempio delle macchie solari, e tale è il caso anche nei dati sopra.

+0

Scusa ma ancora non capisco. Sono stato in grado di creare 2 TemporalDataDescription come hai detto. Ma devo aggiungere entrambi allo stesso TemporalMLDataSet? – vincenzodentamaro

+1

Ok, ho aggiunto una FAQ per questo articolo, completa con un esempio. Sì, per questo dovresti creare due TDD e aggiungerli entrambi al set. L'esempio qui ha due input, proprio come tu hai qui, e uno è usato solo per l'input. http://www.heatonresearch.com/faq/3/1 – JeffHeaton

+0

grazie Jeff, vorrei pubblicare la soluzione qui. Posso farlo? – vincenzodentamaro