SciPy interpolyatsiya


ULASHISH

Interpolyatsiya nima?

Interpolyatsiya — berilgan nuqtalar orasida yangi nuqtalar hosil qilish usuli.

Masalan, 1 va 2 nuqtalar uchun interpolyatsiya qilib, 1.33 va 1.66 nuqtalarni topishimiz mumkin.

Interpolyatsiya ko‘p sohalarda qo‘llaniladi: Machine Learning’da biz ko‘pincha ma’lumotlar to‘plamidagi yetishmayotgan ma’lumotlarga duch kelamiz va bu qiymatlarning o‘rnini to‘ldirish uchun ko‘pincha interpolyatsiyadan foydalaniladi.

Qiymatlarni to‘ldirishning bu usuli imputatsiya (imputation) deb ataladi.

Imputatsiyadan tashqari, interpolyatsiya ko‘pincha ma’lumotlar to‘plamidagi diskret nuqtalarni silliqlash kerak bo‘lgan hollarda ishlatiladi.


Buni SciPy’da qanday amalga oshirish mumkin?

SciPy bizga interpolyatsiya bilan ishlash uchun ko‘plab funksiyalarga ega scipy.interpolate nomli modulni taqdim etadi:


1D interpolyatsiya

interp1d() funksiyasi 1 ta o‘zgaruvchili taqsimotni interpolyatsiya qilish uchun ishlatiladi.

U x va y nuqtalarni qabul qiladi va chaqiriladigan funksiya (callable) qaytaradi: bu funksiyani yangi x qiymatlari bilan chaqirish mumkin, u esa ularga mos y qiymatlarini qaytaradi.

Misol

Berilgan xs va ys uchun 2.1, 2.2... dan 2.9 gacha bo‘lgan qiymatlarni interpolyatsiya qiling:

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)

Natija:

  [5.2  5.4  5.6  5.8  6.   6.2  6.4  6.6  6.8]

O‘zingiz sinab ko‘ring »

Eslatma: yangi xs qiymatlari eski xs bilan bir xil oraliqda bo‘lishi kerak, ya’ni interp_func() funksiyasini 10 dan katta yoki 0 dan kichik qiymatlar bilan chaqira olmaymiz.



Splayn interpolyatsiya

1D interpolyatsiyada nuqtalar yagona egri chiziqqa moslashtiriladi, splayn interpolyatsiyada esa nuqtalar splaynlar deb ataladigan polinomlar orqali aniqlangan bo‘lakli (piecewise) funksiyaga moslashtiriladi.

UnivariateSpline() funksiyasi xs va ys qiymatlarini qabul qiladi hamda yangi xs qiymatlari bilan chaqirilishi mumkin bo‘lgan chaqiriladigan funksiyani (callable) hosil qiladi.

Bo‘lakli funksiya (piecewise function): turli oraliqlar uchun turlicha aniqlangan funksiya.

Misol

Quyidagi nochiziqli nuqtalar uchun 2.1, 2.2... 2.9 qiymatlarining bir o‘zgaruvchili splayn interpolyatsiyasini toping:

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)

Natija:

  [5.62826474 6.03987348 6.47131994 6.92265019 7.3939103  7.88514634
   8.39640439 8.92773053 9.47917082]

O‘zingiz sinab ko‘ring »

Radial bazis funksiya yordamida interpolyatsiya

Radial bazis funksiya — qo‘zg‘almas tayanch nuqtaga nisbatan aniqlanadigan funksiya.

Rbf() funksiyasi ham xs va ys qiymatlarini argument sifatida qabul qiladi hamda yangi xs qiymatlari bilan chaqirilishi mumkin bo‘lgan chaqiriladigan funksiyani (callable) hosil qiladi.

Misol

Quyidagi xs va ys qiymatlarini rbf yordamida interpolyatsiya qiling va 2.1, 2.2 ... 2.9 uchun qiymatlarni toping:

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)

Natija:

  [6.25748981  6.62190817  7.00310702  7.40121814  7.8161443   8.24773402
   8.69590519  9.16070828  9.64233874]

O‘zingiz sinab ko‘ring »


W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!