Python的擬合插值是一種常用的數(shù)據(jù)處理方法,在現(xiàn)實(shí)的數(shù)據(jù)處理過程中常常需要對(duì)數(shù)據(jù)進(jìn)行壓縮和插值,以便于數(shù)據(jù)的可視化和應(yīng)用。
擬合插值一般是將數(shù)據(jù)點(diǎn)轉(zhuǎn)換成函數(shù),然后再對(duì)函數(shù)進(jìn)行操作。Python中常用的擬合插值方法有多項(xiàng)式法、樣條法、逆距離法等。這里介紹其中兩種方法——多項(xiàng)式法和樣條法。
# 多項(xiàng)式法 import numpy as np import matplotlib.pyplot as plt x = np.linspace(1, 10, 10) y = np.sin(x) p = np.polyfit(x, y, 4) # 用最高次數(shù)為4的多項(xiàng)式擬合 y_fit = np.polyval(p, x) # 擬合結(jié)果 plt.plot(x, y, 'o', label='raw data') plt.plot(x, y_fit, '-', label='fit data') plt.legend() plt.show()
代碼中,我們用numpy生成一個(gè)1~10之間的等差數(shù)列x和sin函數(shù)的值y。接著,使用np.polyfit()函數(shù)進(jìn)行多項(xiàng)式擬合。這里使用最高次數(shù)為4的多項(xiàng)式進(jìn)行擬合,最終的擬合結(jié)果存放在y_fit中。最后,我們利用matplotlib繪制出原始數(shù)據(jù)和擬合數(shù)據(jù)的圖像。
# 樣條法 from scipy.interpolate import InterpolatedUnivariateSpline x = np.linspace(1, 10, 10) y = np.sin(x) spl = InterpolatedUnivariateSpline(x, y) # 樣條插值 x_new = np.linspace(1, 10, 1000) y_new = spl(x_new) plt.plot(x, y, 'o', label='raw data') plt.plot(x_new, y_new, '-', label='fit data') plt.legend() plt.show()
代碼中,我們同樣使用numpy生成等差數(shù)列x和sin函數(shù)的值y。然后,使用scipy.interpolate模塊的InterpolatedUnivariateSpline()函數(shù)進(jìn)行樣條插值,最終的擬合結(jié)果存放在y_new中。同樣,我們利用matplotlib繪制出原始數(shù)據(jù)和擬合數(shù)據(jù)的圖像。
綜上,Python中的擬合插值方法非常簡(jiǎn)便易用,可以幫助我們更好地處理數(shù)據(jù)和優(yōu)化模型。