SciPy Interpolation
درون یابی چیست؟
درون یابی روشی جهت تولید نقاط بین نقاط داده شده است. مثلاً فرض کنید برای دو نقطه 1 و 2 ممکن است درون یابی را انجام دهیم و نقاط 1.33 و 1.66 را پیدا کنیم.
درون یابی کاربردهای فراوانی دارد. در یادگیری ماشین اکثر اوقات با دادههای گمشده از یک مجموعه داده سر و کار داریم. درون یابی این نقاط را برای ما جایگزین میکند.
انجام درون یابی بوسیله SciPy
SciPy مدول scipy.interpolate
با توابع بسیار جهت انجام درون یابی برای ما فراهم آورده است.
درون یابی یک بعدی
جهت درون یابی متغیری با توزیع یک بعدی میتوان از تابع interp1d()
استفاده کرد.
نقاط x
و y
را به عنوان ورودی گرفته و تابعی با قابلیت فراخوانی را برمیگرداند. این تابع را میتوان با x
جدید فراخوانی کرده و مقادیر y
مربوطه را به دستآورد.
در کد زیر با نقاط مشخص xs
و ys
درون یابی را برای مقادیر 2.1
تا 2.9
انجام دادهایم.
x
جدید باید در محدوده مقادیر x
قدیم باشد. یعنی در اینجا x
جدید نباید از 10 بزرگتر و یا از صفر کوچکتر باشد. در غیر اینصورت نمیتوان تابع interp_func()
را برای آن فراخوانی کرد.
درون یابی اسپلاین
در درون یابی یک بعدی نقاط بر اساس یک منحنی برازش میشوند در حالیکه در درون یابی اسپلاین (Spline Interpolation) نقاط در برابر یک تابع تکهای (piecewise function) که بوسیله چند جملهایها تعریف شده و به آن اسپلاین میگویند برازش میشوند.
تابع UnivariateSpline()
نقاط x
و y
را به عنوان ورودی گرفته و تابعی با قابلیت فراخوانی را برمیگرداند. این تابع را میتوان با x
جدید فراخوانی کرده و مقادیر y
مربوطه را به دستآورد.
در کد زیر درون یابی نقاط 2.1
تا 2.9
را برای نقاط غیرخطی زیر توسط تابع UnivariateSpline()
انجام دادهایم.
درون یابی بوسیله توابع پایه شعاعی
تابع پایه شعاعی (Radial Basis Function) تابعی است که نسبت به یک نقطه ثابت مرجع تعریف شده باشد.
تابع Rbf()
نقاط x
و y
را به عنوان ورودی گرفته و تابعی با قابلیت فراخوانی را برمیگرداند. این تابع را میتوان با x
جدید فراخوانی کرده و مقادیر y
مربوطه را به دستآورد.
در کد زیر درون یابی نقاط 2.1
تا 2.9
را برای نقاط غیرخطی زیر توسط تابع Rbf()
انجام دادهایم.