私は、FlaskでPOST json要求を受信し、予測モデルで機能するという2つの論理部分からなるコードを持っています。だからここにはコード表現にどのように見えるか:予測モデルを持つPython関数をFlaskアプリケーションに適用する方法
from flask import Flask
from flask import request
import io
import json
import pandas as pd
import numpy as np
from fbprophet import Prophet
app = Flask(__name__)
@app.route('/postjson', methods = ['POST'])
def postJsonHandler():
print (request.is_json)
content = request.get_json()
df = pd.io.json.json_normalize(content, ['Days', 'Orders'])
print (df)
return 'JSON posted'
app.run(host='0.0.0.0', port= 8090)
そしてここでは、モデルと機能を備えた一部です:
def TimeSeries():
df['Days'] = pd.to_datetime(df['Days'])
df = df.rename(columns={'Days': 'ds',
'Orders': 'y'})
my_model = Prophet(interval_width=0.95, yearly_seasonality=False, daily_seasonality=False, weekly_seasonality=True)
df['y'] = np.log(df['y'])
my_model.fit(df)
future_dates = my_model.make_future_dataframe(periods=30)
forecast = my_model.predict(future_dates)
yhat=forecast.yhat
ser=np.exp(yhat)
df_upd=pd.DataFrame(ser[-30:])
df_upd.reset_index(drop=True, inplace=True)
js=df_upd.to_dict(orient='split')
del js['index']
res=json.dumps(js)
return res
私の質問には、次のことをbуます:
- どのように転送することができます最初の部分関数postJsonHandler()の結果データフレームdfを第2の部分関数TimeSeries()の入力として使用しますか?
- 予測関数のTimeSeries()をFlask環境に統合して、すべてを一度に実行できるようにするにはどうすればいいですか?jsonリクエストを受け取り、それをpandasデータフレームに変換し、予測結果をjson形式で計算し、 。
Big Thanks!
何のライブラリを使用していますか? –
それは質問に関連していません。しかし、私はfbprophetライブラリで一般的なAdditive Model(GAM)を使って時系列の予測をしています。 – HalfPintBoy
あなたがモデルを特定の値にフィットさせているのが分かりましたので、質問がありました。この値はjsonから渡されますか?そうでない場合、私は答えを –