假设我的数据点具有许多功能,其中包括经度和纬度坐标。
我想使用经纬度上的度量“ 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/