Nội suy khoa học viễn tưởng
Nội suy là gì?
Nội suy là một phương pháp tạo điểm giữa các điểm đã cho.
Ví dụ: đối với điểm 1 và 2, ta có thể nội suy và tìm được điểm 1,33 và 1,66.
Nội suy có nhiều cách sử dụng, trong Machine Learning chúng ta thường xử lý dữ liệu bị thiếu trong tập dữ liệu, nội suy thường được sử dụng để thay thế các giá trị đó.
Phương pháp điền giá trị này được gọi là quy định .
Ngoài việc cắt bỏ, phép nội suy thường được sử dụng khi chúng ta cần làm mịn các điểm rời rạc trong tập dữ liệu.
Làm cách nào để triển khai nó trong SciPy?
SciPy cung cấp cho chúng ta một mô-đun có tên scipy.interpolate
có nhiều chức năng để xử lý nội suy:
Nội suy 1D
Hàm interp1d()
được sử dụng để nội suy phân phối với 1 biến.
Nó nhận các điểm x
và y
rồi trả về một hàm có thể gọi được bằng x
mới và trả về y
tương ứng.
Ví dụ
Đối với các giá trị nội suy xs và ys đã cho từ 2.1, 2.2... đến 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)
Kết quả:
[5,2 5,4 5,6 5,8 6. 6,2 6,4 6,6 6,8]Hãy tự mình thử »
Lưu ý: xs mới phải nằm trong cùng phạm vi với xs cũ, nghĩa là chúng ta không thể gọi interp_func()
với các giá trị cao hơn 10 hoặc nhỏ hơn 0.
Nội suy Spline
Trong phép nội suy 1D, các điểm được khớp cho một đường cong trong khi trong phép nội suy Spline, các điểm được khớp với hàm từng phần được xác định bằng đa thức gọi là spline.
Hàm UnivariateSpline()
nhận xs
và ys
rồi tạo ra một funciton có thể gọi được và có thể được gọi bằng xs
mới.
Hàm Piecewise: Một hàm có định nghĩa khác nhau cho các phạm vi khác nhau.
Ví dụ
Tìm nội suy spline đơn biến cho 2.1, 2.2... 2.9 cho các điểm phi tuyến tính sau:
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)
Kết quả:
[5.62826474 6.03987348 6.47131994 6.92265019 7.3939103 7.88514634 8.39640439 8.92773053 9.47917082]Hãy tự mình thử »
Nội suy với hàm cơ sở bán kính
Hàm cơ sở xuyên tâm là hàm được xác định tương ứng với một điểm tham chiếu cố định.
Hàm Rbf()
cũng lấy xs
và ys
làm đối số và tạo ra một hàm có thể gọi được với xs
mới.
Ví dụ
Nội suy xs và ys sau bằng rbf và tìm các giá trị cho 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)
Kết quả:
[6.25748981 6.62190817 7.00310702 7.40121814 7.8161443 8.24773402 8.69590519 9.16070828 9.64233874]Hãy tự mình thử »