python线性回归按日期预测

jea*_*elj 6 python date linear-regression pandas

我想用简单的线性回归预测未来某个日期的值,但我不能因为日期格式.

这是我的数据框:

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
Run Code Online (Sandbox Code Playgroud)

我试图将日期转换为失败

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")
Run Code Online (Sandbox Code Playgroud)

Cha*_*dan 13

线性回归不适用于日期数据.因此我们需要将其转换为数值.以下代码将日期转换为数值:

import datetime as dt
data_df['Date'] = pd.to_datetime(data_df['Date'])
data_df['Date']=data_df['Date'].map(dt.datetime.toordinal)
Run Code Online (Sandbox Code Playgroud)

  • 嗨 jeangelj,请添加这一行: import datetime as dt data_df['Date'] = pd.to_datetime(data_df['Date']) data_df['Date']=data_df['Date'].map(dt.datetime.顺序) (2认同)
  • 请分享代码片段以将其转换回原始值,这是因为一旦我将日期转换为数字并预测了数字日期值,我想将其转换回原始格式。 (2认同)

Sir*_* S. 5

转变:

1)日期到数据框索引

df = df.set_index('date', append=False)
Run Code Online (Sandbox Code Playgroud)

2) 将日期时间对象转换为 float64 对象

df = df.index.to_julian_date()
Run Code Online (Sandbox Code Playgroud)

以日期为自变量运行回归。