
多項式回帰
$$\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()
コメント