Jakie jest preferowane i skuteczne podejście do interpolacji danych wielowymiarowych?
Rzeczy, o które się martwię:
- wydajność i pamięć do budowy, ocena pojedynczej partii / partii
- wymiary obsługi od 1 do 6
- liniowy lub wyższego rzędu
- możliwość uzyskania gradientów (jeśli nie liniowych)
- regularna vs rozproszona siatka
- wykorzystując jako funkcję interpolacyjną, np. w celu znalezienia korzeni lub zminimalizowania
- możliwości ekstrapolacji
Czy istnieje skuteczna implementacja tego typu oprogramowania typu open source?
Miałem częściowe szczęście z scipy.interpolate i kriging z scikit-learn.
Nie próbowałem splajnów, wielomianów Czebyszewa itp.
Oto, co znalazłem do tej pory na ten temat:
Interpolacja liniowa Python 4D na prostokątnej siatce
Szybka interpolacja regularnie próbkowanych danych 3D z różnymi przedziałami w x, yiz
Szybka interpolacja zwykłych danych siatki
Jaka metoda interpolacji rozproszonej na wielu odmianach jest najlepsza w praktyce?
Odpowiedzi:
W pierwszej części mojego pytania znalazłem to bardzo przydatne porównanie wydajności różnych metod interpolacji liniowej przy użyciu bibliotek Pythona:
http://nbviewer.ipython.org/github/pierre-haessig/stodynprog/blob/master/stodynprog/linear_interp_benchmark.ipynb
Poniżej znajduje się lista metod zebranych do tej pory.
Interpolacja standardowa, siatka strukturalna:
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/
Siatka nieustrukturyzowana (rozproszona):
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 duże projekty zawierające interpolację:
https://github.com/sloriot/cgal-bindings (części CGAL, licencjonowane GPL / LGPL)
https://www.earthsystemcog.org/projects/esmp/ (Licencja University of Illinois-NCSA ~ = MIT + BSD-3)
Rzadkie siatki:
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 (Proces Gaussa):
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
Ogólna licencja GPL:
https://github.com/rncarpio/delaunay_linterp
Tasmański
Zestaw narzędzi do adaptacyjnego modelowania stochastycznego i aproksymacji nieinwazyjnej - to solidna biblioteka do integracji i interpolacji w dużych wymiarach, a także do kalibracji parametrów.
Wiązanie Python dla Tasmanian:
https://github.com/rncarpio/py_tsg
https://github.com/sloriot/cgal-bindings (części CGAL, licencjonowane GPL / LGPL)
źródło