Python 多項式フィッティング
polyfit ファイル作成準備その2
前項で panda フォルダに暫定的にファイルを作成しました。
まずはファイル名を設定します。
ファイル名は暫定的に Untitled になっていますのでこれをクリックして名前を変更します。
取り敢えず、ファイル名は、polyfit とします。
Rename をクリックして、ファイル名の変更は完了です。
そして、In [ ]: のところにコ-ドを記入していきます。
Excel ファイル再利用
pandas 概要
で作成した Excel ファイルを再利用します。
pandas 連携用 xlsx ファイル
をクリックすると PC にエクセルがインスト-ルされていれば
xlsx ファイルを開くことができるはずです。
通常ボップアップが開くのですが開かなければ、今開いている画面の一番下を見てください。
エクセルファイルが顔を出しているはずです。
又、右クリックして、このファイル名を
CHART-190624-0802-py.xlsx
とし、
C:\ユ-ザ-\ユ-ザ名\panda\file
フォルダをあらかじめ作成しておき、ここに、保存します。
polyfit ファイル作成
それでは polyfit ファイルを作成していきます。
ファイルは以下の通りです。
たいしたことはありません。
import pandas as pd #① import numpy as np import matplotlib.pyplot as plt xl_df = pd.read_excel( 'file/CHART-190624-0802-py.xlsx') Close = xl_df["Close"].values #② Idx = xl_df.index Idx5 = Idx[-6:] + 5 #③ z = np.polyfit(Idx, Close, 5) #④ p = np.poly1d(z) print("最終日~+5日") print(np.round( np.polyval(z,Idx5),3))#⑤ print(np.round(p(Idx5),3)) plt.plot( Idx, Close, 's', Idx, p(Idx), Idx5, p(Idx5)) #⑥ plt.show()
- #① モジュ-ルの読込み
使用する外部モジュ-ル3つを読み込みます。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
この辺はもう問題ないと思います。 - #② Excel ファイル読込
Excel ファイルの読込みです。
よく分からない人は Excel 読込みファイル作成 に戻ってみてください。
外部モジュ-ル pandas を読み込んで、 pandas の中にある read_excel( ) 関数(メソッド)を使います。
xl_df = pd.read_excel('file/CHART-190624-0802-py.xlsx')
この関数を使うと( )内のエクセルファイルを Python の中に読み込むことができます。
エクセルファイルを置いたフォルダ名も忘れずに指定します。
そして、
Close = xl_df["Close"].values
とすると Close 列の値をすべて抜き出してくれます。 - #③ X 軸日付
y 軸値(Close)を呼出すための仮の x 軸値(Idx)が必要です。
Idx は 0~29 の30個の整数値です。
これは
Idx = xl_df.index
から取得することができます。
次ぎに未来の x 軸値(Idx5)6日間を作成します。
Idx[-6:]とすると
24~29 の6個の整数値を切り取ることができます。
それに + 5日
Idx5 = Idx[-6:] + 5
すると
Idx5 は 29~34 の6個の整数値となります。
ちなみに、29 にはフィッティング値と生デ-タが存在しており、
30~34 に5個の未来の予測値が表示されることになります。 - #④ フィッティング
フィッティング関数 np.polyfit()
z = np.polyfit(Idx, Close, 5)
を設定します。
第1引数には x 軸値の配列
第2引数には y 軸値の配列
第3引数には 多項式関数の次数
を設定します。
今回次数は 5 としました。
フィッティング結果は、np.poly1d() 関数で求めることができます。
p = np.poly1d(z)
- #⑤ 予測値
フィッティング関数を使って将来の予測値を計算します。
予測値は np.polyval() 関数で求めることができます。
np.polyval(z,Idx5)・・・⑤a
z にはフィッティング関数が入っています。
そして Idx5 には(最後+将来)の6個の x 軸値が入っています。
よって ⑤a には 最後のフィッティング値と5個の予測値が入ります。
でも ⑤a は小数点以下が長く見にくい値ですので、 Numpy round 関数を使ってこれを小数点以下3桁の数値に整形して 見やすくします。
np.round(⑤a, 3)
第2引数の 3 は小数点以下の桁数指定です。
np.round(np.polyval(z,Idx5),3))
なお、予測値は np.poly1d() 関数でも求められます。
print(np.round(p(Idx5),3))
とすると同じく、予測値を表示することができます。 - #⑥ フィッティング・予測グラフ
フィッティング及び予測値をグラフにして表示します。
plt.plot(Idx, Close, 's', Idx, p(Idx), Idx5, p(Idx5))
's' 指定は■印でポイントが表示されます。
いくつものグラフを表示したいときは、順に並べていけば ok です。
今回は3つのグラフが表示されます。
このあと、この polyfit ファイルの実行結果をまとめて表示します。
長くなりましたのでここで一旦切りたいと思います。
polyfit ファイル実行結果 に続く
Python 多項式フィッティング概要 に戻る