Matplotlib Python で NumPy 線形フィットをプロットする
Suraj Joshi
2022年1月22日
このチュートリアルでは、numpy.polyfit()
メソッドを用いて与えられたデータに曲線をフィットし、Matplotlib パッケージを用いて曲線を表示する方法を説明します。
import numpy as np
import matplotlib.pyplot as plt
x = [1, 2, 3, 1.5, 4, 2.5, 6, 4, 3, 5.5, 5, 2]
y = [3, 4, 8, 4.5, 10, 5, 15, 9, 5, 16, 13, 3]
plt.scatter(x, y)
plt.title("Scatter Plot of the data")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()
出力:
曲線フィットを行う必要があるデータの散布図が表示されます。X
と Y
の値の間には完全な線形関係がないことがわかりますが、データから最適な線形近似をしてみましょう。
データへの線形フィットのプロット
import numpy as np
import matplotlib.pyplot as plt
x = [1, 2, 3, 1.5, 4, 2.5, 6, 4, 3, 5.5, 5, 2]
y = [3, 4, 8, 4.5, 10, 5, 15, 9, 5, 16, 13, 3]
plt.scatter(x, y, color="red")
plt.title("Scatter Plot of the data")
plt.xlabel("X")
plt.ylabel("Y")
linear_model = np.polyfit(x, y, 1)
linear_model_fn = np.poly1d(linear_model)
x_s = np.arange(0, 7)
plt.plot(x_s, linear_model_fn(x_s), color="green")
plt.show()
出力:
ここでは, 与えられたデータを y=m*x+c
の形式の方程式で近似してみる。polyfit()
メソッドはデータから m
と c
のパラメータを推定し、poly1d()
メソッドはこれらの係数から方程式を作成します。そして、緑色の直線で表される plot()
メソッドを用いて式を図にプロットします。
この例では、polyfit()
メソッドの第 3 引数に 1
を指定しているので、データに一次方程式をフィットさせています。また、データに高次の曲線をフィットさせるために、パラメータの値を変えて実験することもできます。
import numpy as np
import matplotlib.pyplot as plt
x = [1, 2, 3, 1.5, 4, 2.5, 6, 4, 3, 5.5, 5, 2]
y = [3, 4, 8, 4.5, 10, 5, 15, 9, 5, 16, 13, 3]
plt.scatter(x, y, color="red")
plt.title("Scatter Plot of the data")
plt.xlabel("X")
plt.ylabel("Y")
linear_model = np.polyfit(x, y, 2)
linear_model_fn = np.poly1d(linear_model)
x_s = np.arange(0, 7)
plt.plot(x_s, linear_model_fn(x_s), color="green")
plt.show()
出力:
このようにして、polyfit()
メソッドの 3 番目のパラメータを 2 に設定するだけで、2 次曲線をデータにフィットさせる 2 次プロットを生成することができます。
著者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn