插值是一种在给定点之间生成点的方法。
例如:对于点1和2,我们可以插值并找到点1.33和1.66。
插值有很多用途,在机器学习中,我们经常处理数据集中缺失的数据,插值通常用于替换这些值。
这种填充值的方法称为归因。
除了插补之外,当我们需要平滑数据集中的离散点时,还经常使用插值。
SciPy 为我们提供了一个名为scipy.interpolate
它有许多处理插值的函数:
函数interp1d()
用于对具有 1 个变量的分布进行插值。
它需要x
和y
指向并返回一个可以用 new 调用的可调用函数x
并返回对应的y
。
对于给定的 xs 和 ys,将值从 2.1、2.2... 插入到 2.9:
from scipy.interpolate import interp1d
import numpy as np
xs = np.arange(10)
ys = 2*xs + 1
interp_func = interp1d(xs, ys)
newarr = interp_func(np.arange(2.1, 3, 0.1))
print(newarr)
[5.2 5.4 5.6 5.8 6. 6.2 6.4 6.6 6.8]亲自试一试 »
笔记:新的 xs 应该与旧的 xs 处于相同的范围内,这意味着我们不能调用interp_func()
值大于 10 或小于 0。
在一维插值中,点被拟合为单曲线而在样条插值中,点是针对分段的用称为样条的多项式定义的函数。
这个UnivariateSpline()
函数需要xs
和ys
并产生一个可以用 new 调用的可调用函数xs
。
分段函数:对于不同范围有不同定义的函数。
对于以下非线性点,求 2.1、2.2...2.9 的单变量样条插值:
from scipy.interpolate import UnivariateSpline
import numpy as np
xs = np.arange(10)
ys = xs**2 + np.sin(xs) + 1
interp_func = UnivariateSpline(xs, ys)
newarr = interp_func(np.arange(2.1, 3, 0.1))
print(newarr)
[5.62826474 6.03987348 6.47131994 6.92265019 7.3939103 7.88514634 8.39640439 8.92773053 9.47917082]亲自试一试 »
径向基函数是对应于固定参考点定义的函数。
这个Rbf()
函数还需要xs
和ys
作为参数并生成一个可以用 new 调用的可调用函数xs
。
使用 rbf 对以下 xs 和 ys 进行插值并查找 2.1、2.2 ... 2.9 的值:
from scipy.interpolate import Rbf
import numpy as np
xs = np.arange(10)
ys = xs**2 + np.sin(xs) + 1
interp_func = Rbf(xs, ys)
newarr = interp_func(np.arange(2.1, 3, 0.1))
print(newarr)
[6.25748981 6.62190817 7.00310702 7.40121814 7.8161443 8.24773402 8.69590519 9.16070828 9.64233874]亲自试一试 »
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!