什麼是插值,我們如何在 SciPy Python 庫中實現它?


插值是線上或曲線上的兩點之間生成值的一種方法。在機器學習中,插值用於替換資料集中缺失的值。這種填充缺失值的方法稱為插補。插值的另一個重要用途是平滑資料集中的離散點。

SciPy 提供了一個名為 scipy.interpolate 的模組,其中包含許多函式,我們可以藉助這些函式來實現插值。

示例

在下面的示例中,我們將使用 scipy.interpolate() 包實現插值 -

首先,讓我們生成一些資料來在其上實現插值 -

import numpy as np
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt
A = np.linspace(0, 10, num=11, endpoint=True)
B = np.cos(-A**2/9.0)
print (A, B)

輸出

上面的指令碼將在 0 和 4 之間生成以下點 -

[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.] [ 1. 0.99383351 0.90284967 0.54030231 -0.20550672 -0.93454613
-0.65364362 0.6683999 0.67640492 -0.91113026 0.11527995]

現在,讓我們按如下方式繪製這些點

plt.plot(A, B, '.')
plt.show()

現在我們需要根據固定的資料點建立一個插值函式。讓我們建立它 -

function_interpolate = interp1d(A, B, kind = 'linear')

為了清楚地看到插值的差異,我們將使用與舊輸入相同的函式建立一個更長的新輸入 -

Anew = np.linspace(0, 10, num=30, endpoint=True)
plt.plot(A, B, '.', Anew, function_interpolate(Anew), '-')
plt.legend(['data', 'linear'], loc = 'best')
plt.show()

更新於:2021年11月24日

164 次檢視

啟動您的職業生涯

完成課程後獲得認證

開始
廣告
© . All rights reserved.