Matplotlib Python で NumPy 線形フィットをプロットする

Suraj Joshi 2022年1月22日
Matplotlib Python で NumPy 線形フィットをプロットする

このチュートリアルでは、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()

出力:

曲線フィットのためのデータの Matplotlib 散布図

曲線フィットを行う必要があるデータの散布図が表示されます。XY の値の間には完全な線形関係がないことがわかりますが、データから最適な線形近似をしてみましょう。

データへの線形フィットのプロット

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() メソッドはデータから mc のパラメータを推定し、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 avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn