假设我的数据点包含许多包含纬度,长坐标的要素。
我想使用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?
答案 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"
算法。