假设我的数据点具有许多功能,其中包括经度和纬度坐标。

我想使用经纬度上的度量“ haversine”使用KNeighborsRegressor。如何为回归器准备数据X_train, Y_train? 。

k_clf = KNeighborsRegressor(n_neighbors=num_neigh,weights=myweights,algorithm='ball_tree',metric='haversine')

clf.fit(X_train,Y_train)


或者,如果我决定编写自己的度量标准,则该函数将接收一个每点包含10个值的numpy ndarray,如何区分经度和纬度?

最佳答案

从sklearn文档中:http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.DistanceMetric.html

对于问题的第一部分:使用Haversine度量进行KNN回归:

适用于二维向量空间的度量标准:请注意,hasrsine距离度量标准需要[纬度,经度]形式的数据,并且输入和输出均以弧度为单位。

因此,X_train的第一列应为纬度,第二列应为经度。

现在,对于问题的第二部分,如果要定义自己的度量标准,则可以选择X_train的格式。但是请记住,如果要使用"ball_tree"运算符,则度量必须是数学距离:

Non-negativity: d(x, y) >= 0
Identity: d(x, y) = 0 if and only if x == y
Symmetry: d(x, y) = d(y, x)
Triangle Inequality: d(x, y) + d(y, z) >= d(x, z)


否则,您将只能使用"brute"算法。

关于python - 如何将KNeighborsRegressor与hasrsine度量一起使用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42511056/

10-16 12:06