在 Matplotlib Python 中繪製 NumPy 線性擬合圖
Suraj Joshi
2022年1月22日
2020年11月24日
本教程介紹瞭如何使用 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()
方法中把 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,就可以對資料生成二次曲線擬合。
Author: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn