2016-10-24 21 views
0

将来の日付で単純な線形回帰を使って値を予測したいのですが、日付形式のために値を予測できません。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") 
+0

これは、残念ながら動作しません – Sam

答えて

1

日付データでは線形回帰は機能しません。

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

2)変換

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

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

時系列データのためにARMAまたはARIMAモデルに見たいと思うかもしれません - 私は、このエラーメッセージはTypeErrorを取得:記述子「toordinal」「datetime.date」オブジェクトが必要ですが、受け取りました " str ' – jeangelj

+0

私はこれをします? [日付]] = [日付]] = pd.to_datetime(データ_df ['日付']、形式= '%Y-%m-%d') – jeangelj

+0

こんにちは、この行を追加してください:dt data_df ['Date'] = dvd_df ['Date'] data_df ['Date'] = data_df ['Date']。map(dt.datetime.toordinal)= pd.to_datetime(data_df ['Date']) – Chandan

1

ライナーの回帰は、数値データで動作日付を変換しようとした:

この

は私が持っているデータフレームです。日時型はこの場合には適切ではありません。その列を3つの別々の列(年、月、日)に分けて削除してください。

1

変換する:したがって、我々は数値に日付を変換するコードを以下の数値value.Theに変換する必要がありますdatetimeオブジェクトからfloat64オブジェクトへ

df = df.index.to_julian_date() 

日付がinである回帰を実行する従属変数。

0

、あなたのようなものを使用することができ、完全なDateTimeオブジェクトから序を生成する上で完全な答えを秒など。それが唯一の日付値に変換し、アカウント分にかからないように注意してください

dt.datetime.toordinal 

を使用しました:

df['Datetime column'],apply(lambda x: time.mktime(x.timetuple())) 
関連する問題