web-dev-qa-db-ja.com

python日付による線形回帰予測

単純な線形回帰で将来の日付の値を予測したいのですが、日付の形式が原因でできません。

これは私が持っているデータフレームです:

data_df = 
date          value
2016-01-15    1555
2016-01-16    1678
2016-01-17    1789
...  

y = np.asarray(data_df['value'])
X = data_df[['date']]
X_train, X_test, y_train, y_test = train_test_split             
(X,y,train_size=.7,random_state=42)

model = LinearRegression() #create linear regression object
model.fit(X_train, y_train) #train model on train data
model.score(X_train, y_train) #check score

print (‘Coefficient: \n’, model.coef_)
print (‘Intercept: \n’, model.intercept_) 
coefs = Zip(model.coef_, X.columns)
model.__dict__
print "sl = %.1f + " % model.intercept_ + \
     " + ".join("%.1f %s" % coef for coef in coefs) #linear model

日付の変換に失敗しました

data_df['conv_date'] = data_df.date.apply(lambda x: x.toordinal())

data_df['conv_date'] = pd.to_datetime(data_df.date, format="%Y-%M-%D")
10
jeangelj

線形回帰は日付データでは機能しません。したがって、数値に変換する必要があります。次のコードは、日付を数値に変換します。

import datetime as dt
data_df['Date'] = pd.to_datetime(data_df['Date'])
data_df['Date']=data_df['Date'].map(dt.datetime.toordinal)
17
Chandan

変換:

1)データフレームインデックスの日付

df = df.set_index('date', append=False)

2)datetimeオブジェクトをfloat64オブジェクトに変換します

df = df.index.to_julian_date()

独立変数である日付で回帰を実行します。

3
Siraj S.

線形回帰は数値データに対して機能します。この場合、日時タイプは適切ではありません。その列は、3つの別々の列(年、月、日)に分離した後で削除する必要があります。

1
qmaruf

使用する場合

dt.datetime.toordinal

日付値のみを変換し、分、秒などは考慮しないことに注意してください。完全なdatetimeオブジェクトから序数を生成することに関する完全な回答を得るには、次のようなものを使用できます。

df['Datetime column'],apply(lambda x: time.mktime(x.timetuple()))
0
Thomas Vetterli