Quelle est l'approche préférée et efficace pour interpoler des données multidimensionnelles?
Choses qui m'inquiètent:
- performances et mémoire pour la construction, évaluation unique / batch
- dimensions de manipulation de 1 à 6
- linéaire ou d'ordre supérieur
- pouvoir obtenir des gradients (sinon linéaires)
- grille régulière vs dispersée
- utilisant comme fonction d'interpolation, par exemple pour trouver des racines ou pour minimiser
- capacités d'extrapolation
Existe-t-il une implémentation open source efficace de cela?
J'ai eu une chance partielle avec scipy.interpolate et kriging de scikit-learn.
Je n'ai pas essayé les splines, les polynômes de Chebyshev, etc.
Voici ce que j'ai trouvé jusqu'à présent sur ce sujet:
Interpolation linéaire Python 4D sur une grille rectangulaire
Interpolation rapide des données de grille régulières
Quelle méthode d'interpolation dispersée multivariée est la meilleure pour une utilisation pratique?
Réponses:
Pour la première partie de ma question, j'ai trouvé cette comparaison très utile pour les performances de différentes méthodes d'interpolation linéaire utilisant des bibliothèques python:
http://nbviewer.ipython.org/github/pierre-haessig/stodynprog/blob/master/stodynprog/linear_interp_benchmark.ipynb
Vous trouverez ci-dessous la liste des méthodes collectées jusqu'à présent.
Interpolation standard, grille structurée:
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/
Grille non structurée (dispersée):
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 grands projets qui incluent l'interpolation:
https://github.com/sloriot/cgal-bindings (parties de CGAL, sous licence GPL / LGPL)
https://www.earthsystemcog.org/projects/esmp/ (Licence University of Illinois-NCSA ~ = MIT + BSD-3)
Grilles clairsemées:
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
Krigeage (processus gaussien):
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
Licence GPL générale:
https://github.com/rncarpio/delaunay_linterp
Tasmanian
La boîte à outils pour la modélisation adaptative stochastique et l'approximation non intrusive - est une bibliothèque robuste pour l'intégration et l'interpolation dimensionnelles élevées ainsi que pour l'étalonnage des paramètres.
Liaison Python pour la Tasmanie:
https://github.com/rncarpio/py_tsg
https://github.com/sloriot/cgal-bindings (parties de CGAL, sous licence GPL / LGPL)
la source