日時と体重から明日の体重を予測するコード・その1
とりあえず完成しました。
色々と思うことがありますが、明日に書きます。
体重のデータを保存しているABC.csv、以下の数値にしています。
2020-5-1 8:0:0,60.1
2020-5-3 8:0:0,60.0
2020-5-3 20:0:0,61.0
2020-5-4 8:0:0,59.2
2020-5-6 8:0:0,60.5
2020-5-7 8:0:0,60.7
2020-5-7 8:5:0,60.8
肝心のソースコード、以下です。
#時系列データを取得
import pandas as pd
#グラフ作成用
import matplotlib.pyplot as plt
# csvファイルの読み込み
df = pd.read_csv('abc.csv',names=('ds', 'y'), dtype = {'ds':'object', 'y':'float'} ) # 日付型に設定
#時系列分析のための構造体を作成する
#最初に数値をfloat型で格納
my_df=pd.Series(df['y'], dtype='float')
#基準となる時間軸を変換して格納
my_df.index=pd.to_datetime(df['ds'])
#重複データの削除 、日付が欠損している場合の穴埋めだがデータは埋めない。
my_df=my_df.resample('D').mean()
#欠損データがあるので 、前後の時間差から、欠損データを合成して穴埋め
my_df=my_df.interpolate('time')
#statsmodelsのARを使用する
from statsmodels.tsa.ar_model import AR
#ARでデータ指定 、fitで学習
#maxlagは不明 、現在のデータを何世代前の数値まで反映して計算するかの指定?
#ワーニング出てるが無視
ar= AR(my_df).fit(maxlag=3)
#期間指定で予測させる
ar_p = ar.predict('2020-05-07','2020-05-08')
#グラフ作成
plt.plot(my_df)
#plt .show()
plt.plot(ar_p)
plt.show()
#2020 -05-08の結果を出力する
print(ar_p.values[1])