如何使用KNeighborsRegressor与hasrsine指标?

时间:2017-02-28 14:14:05

标签: python machine-learning scikit-learn

假设我的数据点包含许多包含纬度,长坐标的要素。

我想使用KneighborsRegressor使用指标" hasrsine"在拉特朗斯。如何为回归量准备数据X_train, Y_train

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

clf.fit(X_train,Y_train)

或者,如果我决定编写自己的度量标准,该函数会收到一个numpy ndarray,每个点有10个值,如何区分lats和longs?

1 个答案:

答案 0 :(得分:1)

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

对于问题的第一部分:使用针对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"算法。