Ich versuche, eine einfache lineare Regression auf einem Pandas Datenrahmen zu tun mit scikit linearen Regressor lernen. Meine Daten ist eine Zeitreihe und die Pandas Datenrahmen hat einen Datetime-Index:Verwenden Scikit Lernen lineare Regression auf einer Zeitreihe Pandas Datenrahmen zu tun
value
2007-01-01 0.771305
2007-02-01 0.256628
2008-01-01 0.670920
2008-02-01 0.098047
Etwas zu tun, einfach wie
from sklearn import linear_model
lr = linear_model.LinearRegression()
lr(data.index, data['value'])
hat nicht funktioniert:
float() argument must be a string or a number
So habe ich versucht, eine neue Spalte mit den Daten zu erstellen, um zu versuchen, es zu verwandeln:
data['date'] = data.index
data['date'] = pd.to_datetime(data['date'])
lr(data['date'], data['value'])
aber jetzt erhalte ich:
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
So ist die Regressor- nicht Datumzeit verarbeiten kann. Ich sah eine Reihe von Möglichkeiten, um ganzzahlige Daten in datetime zu konvertieren, konnte aber keine Möglichkeit finden, beispielsweise von datetime in integer zu konvertieren.
Was ist der richtige Weg, dies zu tun?
PS: Ich habe Interesse an mit scikit, weil ich jetzt später damit mehr Material auf dem Tun, so dass kein statsmodels bin die Planung.
Konvertieren Sie Ihre Daten in die Zeit seit der Zeit: http://StackOverflow.com/Questions/15203623/Convert-Pandas-DateTimeIndex-To-Unix-Time – mbatchkarov
Danke. Die folgende Lösung ist "pandonischer". – Ivan
Gleiches Verlangen hier. Ich bin traurig, dass Sklearn nicht mit einem Datetimeindex umgehen kann ... Ich wünschte, der Science Stack würde besser zusammenspielen. –