10Fold Kreuzvalidierung bei Zeitreihen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
uschmidt
User
Beiträge: 14
Registriert: Sonntag 9. April 2017, 15:00

Hallo Python Experten,
ich komme leider bei einem Projekt nicht weiter und bräuchte daher nochmal eure Hilfe.

Die Aufgabe ist, eine 10Fold Kreuzvalidierung für eine Zeitreihe zu erstellen, bei der 90% der Daten fürs Training und die letzten 10% fürs Testen verwendet werden. Für das Testset soll dann der mittlerer quadratischer Vorhersagefehler (RMSE) berechnet werden.

Nach mehreren Versuchen und Recherche bin ich zu dieser Lösung gekommen:

Code: Alles auswählen

tscv = TimeSeriesSplit(n_splits=10)
print(tscv)  

X = mergedf['AnzahlTweets']
y = mergedf['Kurs']

for train_index, test_index in tscv.split(X):
   print("TRAIN:", train_index, "TEST:", test_index)
   X_train, X_test = X[train_index], X[test_index]
   y_train, y_test = y[train_index], y[test_index]

linreg=LinearRegression()
linreg.fit(X_train,y_train)
y_pred=linreg.predict(X_test)
print('RMSE:',np.sqrt(metrics.mean_squared_error(y_test, y_pred)))
Ist das der richtige Ansatz?

Außerdem frage ich mich, wieso X_train, X_test, y_train, y_test zu 'NaN' werden. So bekomme ich immer die Fehlermeldung 'ValueError: Input contains NaN, infinity or a value too large for dtype('float64').'

Ich hoffe, jemand kann mir helfen. Danke schon mal!
Zuletzt geändert von Anonymous am Donnerstag 4. Mai 2017, 14:25, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Antworten