在 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() 方法中把 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() 方法的第三個引數設定為 2,就可以對資料生成二次曲線擬合。

作者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn