numpy.polyfit(x,y,n)のメモ


numpy.polyfit(x,y,n)

SciPy.org numpy.polyfitを参考にしています。
テキトーな日本語に加え、テキトーな解釈なので、上の公式マニュアルも読むことをお勧めします。

poly1dと連携させるとかなり便利です。
簡単に回帰線をmatplotで描けます。

np.polyfit(x,y,n)

polyfit(x, y, deg, rcond = None, full = False, w = None, cov = False)

x:numpyのarray型 M行1列
y:numpyのarray型 M行1列 か M行k列
deg:多項式の係数の数
以下省略

戻り値
多項式の係数と切片がarrayで返される

’’’よく分からないけどメモ’’’
Full=Falseかつcov = Trueのとき、多項式係数の推定値の共分散行列が返される

実行

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)

p4 = np.polyfit(x, y, 4)
print('多項式の係数{0}'.format(p4))

xp = np.linspace(0, 8, 100)
p = np.poly1d(p4)
#xとyの散布図
plt.scatter(x,y)

#多項式回帰線
plt.plot(xp, p(xp), c='r')
plt.title('deg = 4')
plt.show()

出力結果

polyfit_1

おまけ

過学習

deg=4

deg4

deg=3

deg3

deg=2

deg2

deg=1

deg1