2

I have tens of thousands of unstructured points in a multidimensional space. I would like to interpolate these to tens of thousands of other unstructured points. The interpolation can be smoothing, but piecewise linear is preferred, and I would prefer for it to be smoother than a nearest neighbour interpolation. Extrapolation may be required, so LinearNDInterpolator is out. The input and output points will consist of clusters, so it is inefficient to use methods such as scipy's RBF interpolator as I believe this will use all of the input points to calculate each output point, even though many of the input points will be similar to each other.

This answer to a similar question indicated that it is possible to make the RBF interpolation more efficient when the number of inputs is large, but did not include the details. How can it be done?

As I can tolerate smoothing, and many of the inputs will be similar to each other, support vector regression might be appropriate. Are there other methods that are suited to this situation (preferably ones with a Python interface)?

user3708067
  • 543
  • 5
  • 12

1 Answers1

1

Tens of thousands of points are not that many, even for the RBF method, especially if you could further thin them out by clustering and removing redundant points.

A proper RBF library, like the one recommended here Constraining RBF interpolation of 3D surface to keep curvature, should be able to handle this especially with the compactly supported basis kernels (called Wendland in https://rbf.readthedocs.io/en/latest/basis.html).

Could you try that library, play with the kernels and their parameters, and I hope you find a success with the RBF method.

rych
  • 682
  • 3
  • 10
  • 22
  • 1
    I also just discovered that a nearest neighbour RBF interpolator (KNearestRBFInterpolator) will be included in the 1.7.0 release of Scipy – user3708067 Jun 11 '21 at 10:13
  • Ah yes, this library also has it: https://rbf.readthedocs.io/en/latest/interpolate.html#rbf.interpolate.KNearestRBFInterpolant Same k-nearest trick is used in moving least squares MLS approximation if you don't need interpolation. It has its own rich literature and success stories. The question of how to choose the 'k' is like choosing a cutoff radius of a compactly supported RBF kernel -- it'll depend on your data points distribution – rych Jun 11 '21 at 13:29