Home » python » SciPy Interpolation

SciPy Interpolation

by Catur Kurnia Sari
by Catur Kurnia Sari

Apa itu Interpolasi?

Interpolasi adalah metode untuk menghasilkan titik di antara titik-titik tertentu.

Misalnya: untuk poin 1 dan 2, kita dapat melakukan interpolasi dan menemukan poin 1.33 dan 1.66.

Interpolasi memiliki banyak kegunaan, dalam Machine Learning kita sering menangani data yang hilang dalam sebuah dataset, interpolasi sering digunakan untuk menggantikan nilai-nilai tersebut.

Metode pengisian nilai ini disebut imputasi.

Selain imputasi, interpolasi sering digunakan di mana kita perlu memperhalus titik-titik diskrit dalam sebuah dataset.

Bagaimana cara menerapkannya di SciPy?

SciPy memberi kita modul bernama scipy.interpolate yang memiliki banyak fungsi untuk menangani interpolasi:

Interpolasi 1D

Fungsi interp1d() digunakan untuk menginterpolasi distribusi dengan 1 variabel.

Dibutuhkan x dan y poin dan mengembalikan fungsi yang dapat dipanggil yang bisa dipanggil dengan x baru dan mengembalikan y yang sesuai.

Contoh:
Tentukan nilai interpolasi xs dan ys yang diberikan dari 2.1, 2.2 … hingga 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)

Catatan: bahwa xs baru harus berada dalam rentang yang sama dengan xs lama, artinya kita tidak dapat memanggil interp_func() dengan nilai lebih tinggi dari 10, atau kurang dari 0.

Interpolasi Spline

Dalam interpolasi 1D, titik-titik dipasang pada kurva tunggal sedangkan dalam interpolasi Spline, titik-titik dipasang pada fungsi pemenggalan yang ditentukan dengan polinomial yang disebut splines.

Fungsi UnivariateSpline() mengambil xs dan ys dan menghasilkan fungsi yang dapat dipanggil dengan xs baru.

Fungsi Piecewise : Fungsi yang memiliki definisi berbeda untuk rentang berbeda.

Contoh:
Temukan interpolasi spline univariat untuk 2.1, 2.2 … 2.9 pada titik non linier berikut

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)

Interpolasi dengan Fungsi Radial Basis

Fungsi basis radial adalah fungsi yang didefinisikan sesuai dengan titik referensi tetap.

Fungsi Rbf() juga menggunakan xs dan ys sebagai argumen dan menghasilkan fungsi yang dapat dipanggil dengan xs baru.

Contoh:
Interpolasi xs dan ys berikut menggunakan rbf dan temukan nilai untuk 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)

You may also like