Was ist der bevorzugte und effiziente Ansatz für die Interpolation mehrdimensionaler Daten?
Dinge, über die ich mir Sorgen mache:
- Leistung und Speicher für Konstruktion, Einzel- / Chargenbewertung
- Handhabungsabmessungen von 1 bis 6
- linear oder höherer Ordnung
- Fähigkeit, Gradienten zu erhalten (wenn nicht linear)
- regelmäßiges gegen zerstreutes Gitter
- Verwendung als Interpolationsfunktion, zB um Wurzeln zu finden oder zu minimieren
- Extrapolationsmöglichkeiten
Gibt es eine effiziente Open-Source-Implementierung davon?
Ich hatte teilweise Glück mit scipy.interpolate und kriging von scikit-learn.
Ich habe keine Splines, Chebyshev-Polynome usw. ausprobiert.
Folgendes habe ich bisher zu diesem Thema gefunden:
Python 4D lineare Interpolation auf einem rechteckigen Gitter
Antworten:
Für den ersten Teil meiner Frage fand ich diesen sehr nützlichen Vergleich zur Durchführung verschiedener linearer Interpolationsmethoden unter Verwendung von Python-Bibliotheken:
http://nbviewer.ipython.org/github/pierre-haessig/stodynprog/blob/master/stodynprog/linear_interp_benchmark.ipynb
Unten finden Sie eine Liste der bisher gesammelten Methoden.
Standardinterpolation, strukturiertes Gitter:
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/
Unstrukturiertes (verstreutes) Gitter:
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 große Projekte, die Interpolation enthalten:
https://github.com/sloriot/cgal-bindings (Teile von CGAL, lizenzierte GPL / LGPL)
https://www.earthsystemcog.org/projects/esmp/ (University of Illinois-NCSA-Lizenz ~ = MIT + BSD-3)
Spärliche Gitter:
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 (Gaußscher Prozess):
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
Allgemeine GPL-Lizenz:
https://github.com/rncarpio/delaunay_linterp
tasmanisch
Das Toolkit für adaptive stochastische Modellierung und nicht-intrusive Approximation - ist eine robuste Bibliothek für hochdimensionale Integration und Interpolation sowie Parameterkalibrierung.
Python-Bindung für Tasmanian:
https://github.com/rncarpio/py_tsg
https://github.com/sloriot/cgal-bindings (Teile von CGAL, lizenzierte GPL / LGPL)
quelle