Каков предпочтительный и эффективный подход для интерполяции многомерных данных?
Вещи, о которых я беспокоюсь:
- производительность и память для построения, единичная / пакетная оценка
- размеры обработки от 1 до 6
- линейный или более высокого порядка
- возможность получения градиентов (если не линейная)
- обычная или рассеянная сетка
- используя в качестве функции интерполяции, например, чтобы найти корни или минимизировать
- возможности экстраполяции
Существует ли эффективная реализация этого с открытым исходным кодом?
У меня была частичная удача с scipy.interpolate и кригингом из scikit-learn.
Я не пробовал сплайны, чебышевские полиномы и т. Д.
Вот что я нашел на эту тему:
Python 4D линейная интерполяция на прямоугольной сетке
Быстрая интерполяция трехмерных данных с регулярной выборкой с различными интервалами по x, y и z
Быстрая интерполяция регулярных данных сетки
Какой метод многомерной рассеянной интерполяции является наилучшим для практического использования?
Ответы:
В первой части моего вопроса я нашел это очень полезное сравнение производительности различных методов линейной интерполяции с использованием библиотек python:
http://nbviewer.ipython.org/github/pierre-haessig/stodynprog/blob/master/stodynprog/linear_interp_benchmark.ipynb
Ниже приведен список методов, собранных до сих пор.
Стандартная интерполяция, структурированная сетка:
http://docs.scipy.org/doc/scipy-dev/reference/generated/scipy.ndimage.interpolation.map_coordinates.html
http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.RegularGridInterpolator.html
https://github.com/rncarpio/linterp/
Неструктурированная (рассеянная) сетка:
http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.LinearNDInterpolator.html#scipy.interpolate.LinearNDInterpolator
http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.griddata.html
http://docs.scipy.org/doc/scipy/reference/generated/scipy.interpolate.Rbf.html
2 больших проекта, которые включают интерполяцию:
https://github.com/sloriot/cgal-bindings (части CGAL, лицензированная лицензия GPL / LGPL)
https://www.earthsystemcog.org/projects/esmp/ (Лицензия Университета Иллинойса-NCSA ~ = MIT + BSD-3)
Разреженные сетки:
https://github.com/EconForge/Smolyak
https://github.com/EconForge/dolo/tree/master/dolo/numeric/interpolation
http://people.sc.fsu.edu/~jburkardt/py_src/sparse_grid/sparse_grid.html
https://aerodynamics.lr.tudelft.nl/~rdwight/work_sparse.html
https://pypi.python.org/pypi/puq
Кригинг (гауссовский процесс):
http://scikit-learn.org/stable/modules/generated/sklearn.gaussian_process.GaussianProcess.html
https://github.com/SheffieldML/GPy
https://software.sandia.gov/svn/surfpack/trunk/
http://openmdao.org/dev_docs/_modules/openmdao/lib/surrogatemodels/kriging_surrogate.html
Генеральная лицензия GPL:
https://github.com/rncarpio/delaunay_linterp
Тасманский
Инструментарий для адаптивного стохастического моделирования и неинтрузивного приближения - это надежная библиотека для интеграции и интерполяции больших размеров, а также калибровки параметров.
Привязка Python для Tasmanian:
https://github.com/rncarpio/py_tsg
https://github.com/sloriot/cgal-bindings (части CGAL, лицензированная лицензия GPL / LGPL)
источник