什么是插值,我们如何在 SciPy Python 库中实现它?


插值是在线或曲线上的两点之间生成值的一种方法。在机器学习中,插值用于替换数据集中缺失的值。这种填充缺失值的方法称为插补。插值的另一个重要用途是平滑数据集中的离散点。

SciPy 提供了一个名为 scipy.interpolate 的模块,其中包含许多函数,我们可以借助这些函数来实现插值。

示例

在下面的示例中,我们将使用 scipy.interpolate() 包实现插值 -

首先,让我们生成一些数据来在其上实现插值 -

Open Compiler
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 次查看

启动您的职业生涯

完成课程后获得认证

开始
广告