SciPy interpolyatsiya
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!
