Description
sklearn provides a lot of functionality, we could use to simplify our code.
Distance matrix calculation:
https://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise_distances.html
KDtree:
https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KDTree.html
Search radius to optimize moving window kriging (See: #57):
https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KDTree.html#sklearn.neighbors.KDTree.query_radius
Nearest neighbors:
https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KDTree.html#sklearn.neighbors.KDTree.query
Beside that, one can specify the metric in use (see: #120):
https://scikit-learn.org/stable/modules/generated/sklearn.neighbors.DistanceMetric.html
- “euclidean” | EuclideanDistance | | sqrt(sum((x - y)^2))
- “manhattan” | ManhattanDistance | | sum(|x - y|)
- “chebyshev” | ChebyshevDistance | | max(|x - y|)
- “minkowski” | MinkowskiDistance | p | sum(|x - y|^p)^(1/p)
- “wminkowski” | WMinkowskiDistance | p, w | sum(|w * (x - y)|^p)^(1/p)
- “seuclidean” | SEuclideanDistance | V | sqrt(sum((x - y)^2 / V))
- “mahalanobis” | MahalanobisDistance | V or VI | sqrt((x - y)' V^-1 (x - y))
Or for geo-coordinates (see: #121):
- “haversine” | HaversineDistance | 2 arcsin(sqrt(sin^2(0.5dx) + cos(x1)cos(x2)sin^2(0.5dy)))
(np.deg2rad needed here)
So this could solve a lot of issues.