`

numpy.polyfit()を用いた多項式最小二乗法

`

03-polynomial-lsq.py

`import csv
from pprint import pprint
import numpy as np numpyモジュールを別名 np でimport
from matplotlib import pyplot as plt
infile = 'data.csv'
` `
#``CSVのデータをheaderと、x, yデータ別々のリストに読み込む
i = 0 pythonでは for文で for(i = 0 ; i < n ; i++) のような構文を使えないので、
` `自前でカウンタ変数を用意する
x = []
y = []
with open(infile, "r") as f:
reader = csv.reader(f)
for row in reader:
if i == 0:
header = row
else:
x.append(float(row[0])) ファイルから読み込んだ値はstring型なので、
float()で浮動小数点型に変換する
y.append(float(row[1]))
i += 1 カウンタアップ
print("header:", header)
print("x:", x)
print("y:", y)
print("polynomial fit start:")
ai = np.polyfit(x, y, 2) numpy.polyfit()の実行。第3引数は多項式の次数
print(" lsq result: ai=", ai)
print(" y = {} + {} * x + {} * x^2".format(ai[0], ai[1], ai[2]))
plt.scatter(x , y) matplotlibで元データ x, y の散布図を作成
plt.show() グラフを表示。
`