Python 多項式フィッティング

polyfit ファイル作成準備その2

前項で panda フォルダに暫定的にファイルを作成しました。
まずはファイル名を設定します。
ファイル名は暫定的に Untitled になっていますのでこれをクリックして名前を変更します。


pandas ファイル名

取り敢えず、ファイル名は、polyfit とします。
Rename をクリックして、ファイル名の変更は完了です。


pandas ファイル名変更

そして、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()

  1. #① モジュ-ルの読込み

    使用する外部モジュ-ル3つを読み込みます。
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    この辺はもう問題ないと思います。

  2. #② 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 列の値をすべて抜き出してくれます。

  3. #③ 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個の未来の予測値が表示されることになります。

  4. #④ フィッティング

    フィッティング関数 np.polyfit()
    z = np.polyfit(Idx, Close, 5)
    を設定します。
    第1引数には x 軸値の配列
    第2引数には y 軸値の配列
    第3引数には 多項式関数の次数
    を設定します。
    今回次数は 5 としました。
    フィッティング結果は、np.poly1d() 関数で求めることができます。
    p = np.poly1d(z)

  5. #⑤ 予測値

    フィッティング関数を使って将来の予測値を計算します。
    予測値は 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))
    とすると同じく、予測値を表示することができます。

  6. #⑥ フィッティング・予測グラフ

    フィッティング及び予測値をグラフにして表示します。
    plt.plot(Idx, Close, 's', Idx, p(Idx), Idx5, p(Idx5))
    's' 指定は■印でポイントが表示されます。
    いくつものグラフを表示したいときは、順に並べていけば ok です。
    今回は3つのグラフが表示されます。


このあと、この polyfit ファイルの実行結果をまとめて表示します。
長くなりましたのでここで一旦切りたいと思います。


polyfit ファイル実行結果 に続く
Python 多項式フィッティング概要 に戻る

63PearVillage に戻る