SciPy補間

補間とは

数学的数値解析の分野では、補間(英語:interpolation)は、既知の離散データポイントを介して範囲内の新しいデータポイントを推測するプロセスまたはメソッドです。

簡単に言うと、補間は、指定されたポイントの間にポイントを生成するメソッドです。

例えば:2つのポイント1と2に対して、ポイント1.33と1.66を補間して見つけることができます。

補間には多くの用途があります。機械学習では、欠落したデータを処理することがよくあります。通常、補間を使用してこれらの値を置き換えることができます。

このような値を補充するメソッドは、内挿と呼ばれます。

内挿以外、データセット内の離散点を平滑化する必要がある場合に補間がよく使用されます。

SciPyで補間を実装することについて

SciPyは、補間を処理するためのscipy.interpolateモジュールを提供します。

一次元補間

1次元データの補間は、メソッドinterp1d()によって実行できます。

このメソッドは、xポイントとyポイントの2つのパラメータを受け取ります。

返す値は呼び出し可能な関数であり、新しいxによって呼び出すことができ、対応するyを返します。y = f(x)

指定された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と同じ範囲内にある必要があります。つまり、10より大きい値または0より小さい値によってinterp_func()を呼び出すことはできません。

単変量補間

1次元補間では、点は単一の曲線に適合しますが、スプライン補間では、点は多項式の断片によって定義された関数に適合します。

単変量補間にはUnivariateSpline()関数を使用し、xsとysを受け入れ、呼び出し可能な関数を生成します。この関数は新しいxsに呼び出すことができます。

区分線形関数は、独立変数xのさまざまな範囲に対してさまざまな式を持つ関数です。

非線形点のため、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補間)

動径基底関数は、固定基準点に対応して定義された関数です。

曲面の補間では、通常、動径基底関数補間を使用します。

Rbf()関数は、パラメータとしてxsとysを受け入れ、呼び出し可能な関数を生成します。この関数は、新しいxsによって呼び出すことができます。

実例

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]
Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です