numpy.polyfit()を用いた多項式最小二乗法
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()
グラフを表示。