Qual é a abordagem preferida e eficiente para interpolar dados multidimensionais?
Coisas com as quais me preocupo:
- desempenho e memória para construção, avaliação de lote único
- dimensões de manipulação de 1 a 6
- ordem linear ou superior
- capacidade de obter gradientes (se não lineares)
- grade regular versus dispersa
- como função de interpolação, por exemplo, para encontrar raízes ou minimizar
- recursos de extrapolação
Existe uma implementação eficiente de código aberto disso?
Eu tive sorte parcial com scipy.interpolate e kriging do scikit-learn.
Não tentei splines, polinômios de Chebyshev etc.
Aqui está o que eu encontrei até agora sobre este tópico:
Interpolação linear Python 4D em uma grade retangular
Interpolação rápida de dados 3D regularmente amostrados com diferentes intervalos em x, ye z
Interpolação rápida de dados regulares da rede
Qual método de interpolação dispersa multivariada é o melhor para uso prático?
Respostas:
Para a primeira parte da minha pergunta, achei essa comparação muito útil para o desempenho de diferentes métodos de interpolação linear usando bibliotecas python:
http://nbviewer.ipython.org/github/pierre-haessig/stodynprog/blob/master/stodynprog/linear_interp_benchmark.ipynb
Abaixo está uma lista dos métodos coletados até o momento.
Interpolação padrão, grade estruturada:
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/
Grade não estruturada (dispersa):
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 grandes projetos que incluem interpolação:
https://github.com/sloriot/cgal-bindings (partes da CGAL, licenciada GPL / LGPL)
https://www.earthsystemcog.org/projects/esmp/ (Licença da Universidade de Illinois-NCSA ~ = MIT + BSD-3)
Grades esparsas:
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
Kriging (Processo Gaussiano):
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
Licença GPL geral:
https://github.com/rncarpio/delaunay_linterp
Tasmânia
O Kit de ferramentas para modelagem estocástica adaptativa e aproximação não intrusiva - é uma biblioteca robusta para integração e interpolação de alta dimensão, bem como calibração de parâmetros.
Ligação Python para a Tasmânia:
https://github.com/rncarpio/py_tsg
https://github.com/sloriot/cgal-bindings (partes da CGAL, licenciada GPL / LGPL)
fonte