前回の記事の続きです。
前回の記事では、回帰直線を求めましたが、
今回は、N次の回帰曲線を求めます。
早速ですが、あまりコードに違いはないので
ぺたりと貼ってしまいます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# -*- coding: utf-8 import numpy as np import pylab as plt import os # (0)CSVのロード os.chdir("CSVのパスを指定") data = np.loadtxt("kabuka.csv",delimiter=",", skiprows=1, usecols=(1,2,3,4), dtype='float') def getRegressionLineND(): D = 15 # (1)CSVデータの1列目(とある株価)をy(目的変数)として扱う y = data[:,1]/1000000.0 # (2)x(説明変数)のデータの数だけ用意 x = np.linspace(1, len(y), len(y)) # (3-1)グラフ作成 plt.figure("stock price") # (3-2)月毎の株価と回帰曲線(次数D)をグラフに表示 plt.plot(x, y, "o", label="Stock Price(m)") plt.plot(x, np.poly1d(np.polyfit(x, y, D))(x), label="RegressionLine") # (4-1)ラベル表示 plt.xlabel("num") plt.ylabel("f") plt.legend() # (4-2)グリッド表示 plt.grid() # (4-3)グラフ表示 plt.show() if __name__=='__main__': getRegressionLineND() |
上記は、次数15の曲線のケースです。
結果はこんな感じ。
過剰適合になってるかもですが、
綺麗に、線がフィットされてるのがわかります。
ひとまずここまで。
次はパーセプトロンあたりやっていく予定です。