Files
cief-dashboard/apps/linear_regression.py
T
2020-10-12 11:00:10 +08:00

44 lines
1.3 KiB
Python

from mlxtend.regressor import LinearRegression
from app import *
# read df
df=pd.read_csv('data/warehouse2.csv',parse_dates=['Date'])
# filter 1 month
start_date=df.loc[:,"Date"].max()-pd.Timedelta(30, unit='D')
df=df.loc[df.loc[:,'Date'] >= start_date]
train_xy=df.loc[:,['Date','Daily CBM']]
train_xy=train_xy.drop_duplicates()
train_xy["Date ordinal"]=train_xy.loc[:,"Date"].apply(pd.Timestamp.toordinal)
train_xy["Type"]='current'
train_x=np.expand_dims(np.array(train_xy.loc[:,'Date ordinal']),axis=-1)
train_y=np.array(train_xy.loc[:,'Daily CBM'])
predict_x=[]
for i in range(30):
predict_x.append(train_xy.loc[:,"Date"].max()+pd.Timedelta(1+i, unit='D'))
predict_xy=pd.DataFrame(predict_x, columns=['Date'])
predict_xy["Date ordinal"]=predict_xy.loc[:,"Date"].apply(pd.Timestamp.toordinal)
predict_x=np.expand_dims(np.array(predict_xy.loc[:,'Date ordinal']),axis=-1)
model = LinearRegression()
model.fit(train_x, train_y)
predict_xy['Daily CBM']=model.predict(predict_x)
predict_xy["Type"]='predict'
plot_df=pd.concat([train_xy,predict_xy])
plot_df.sort_values(by=['Date'],inplace=True)
fig = px.line(plot_df, x="Date", y="Daily CBM", color='Type', title='CBM prediction')
layout = html.Div([
html.Div([
html.Div(id='circos-output'),
html.Div(dcc.Graph(id='line-chart',figure=fig),className="six columns")
],className="row")
])