多項式回帰
$$\hat{ y } = \beta_0 + \beta_1x_1 + \beta_2x_2 \cdots + \beta_nx_n$$
と表します。
プログラムと結果
numpyのpolyfit()とpoly1d()
%matplotlib inline import numpy as np from pylab import * #ランダムな数を固定 np.random.seed(0) x = np.random.normal(3.0, 1.0, 100) y = 10 + x * np.random.rand(100) ''' 多項式回帰 ''' #numpyのarrayに変換 x = np.array(x) y = np.array(y) xp = np.linspace(0, 8, 100) #1~5次の多項式回帰線を描きます。 for i in range(5): p4 = np.polyfit(x, y, i+1) print('多項式の係数{0}'.format(p4)) p = np.poly1d(p4) #xとyの散布図 plt.scatter(x,y) #多項式回帰線 plt.plot(xp, p(xp), c='r') plt.title('deg = {}'.format(i+1)) plt.show()
コメント