Sto provando a fare una semplice regressione lineare su un frame di dati panda usando il regressore lineare di apprendimento di scikit. I miei dati è una serie di tempo, e il frame di dati panda ha un indice datetime:Usa Scikit Impara a fare regressione lineare su una serie temporale di dati panda
value
2007-01-01 0.771305
2007-02-01 0.256628
2008-01-01 0.670920
2008-02-01 0.098047
Praticando semplice come
from sklearn import linear_model
lr = linear_model.LinearRegression()
lr(data.index, data['value'])
non ha funzionato:
float() argument must be a string or a number
così ho provato per creare una nuova colonna con le date per provare a trasformarla:
data['date'] = data.index
data['date'] = pd.to_datetime(data['date'])
lr(data['date'], data['value'])
ma ora ottengo:
ValueError: Input contains NaN, infinity or a value too large for dtype('float64').
Così il regressore non può gestire datetime. Ho visto un sacco di modi per convertire i dati interi in datetime, ma non sono riuscito a trovare un modo per convertire da datetime in intero, ad esempio.
Qual è il modo corretto per farlo?
PS: Sono interessato all'utilizzo di scikit perché ho intenzione di fare più cose con esso in seguito, quindi per ora nessun modello di statistiche.
Converti le date in tempo dall'epoca: http://stackoverflow.com/questions/15203623/convert-pandas-datetimeindex-to-unix-time – mbatchkarov
Grazie. La soluzione qui sotto è più "pandonica". – Ivan
Lo stesso desiderio qui. Sono triste che sklearn non possa gestire un datetimeindex ... Vorrei che lo stack scientifico suonasse meglio insieme. –