python - 如何将 KNeighborsRegressor 与半正矢度量一起使用?

标签 python machine-learning scikit-learn

假设我的数据点具有许多特征,包括纬度、经度坐标。

我想使用 KNeighborsRegressor,在经纬度上使用度量“haversine”。如何为回归器准备数据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 个值,我如何区分纬度和经度?

最佳答案

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

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

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

因此,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 与半正矢度量一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42511056/

相关文章:

java - Jython 中的类型错误?

python - 如何使用python本地连接到Mongo数据库

node.js - 使用 loadLayersModel 在 Tensorflow.js 中加载 Keras 模型时出现 "Only absolute URLs are supported"

python - 使用 PyCluster 优化 K(理想的簇数)

python - 评分前的后处理交叉验证预测

python - 无法转换 Pandas 数据帧时间戳

java - Weka API : How to obtain a joint probability, 例如,Pr(A=x, B=y),来自 BayesNet 对象?

machine-learning - 将 sklearn.svm SVC 分类器转换为 Keras 实现

python - 没有名为 'scipy.io.matlab' 的模块

python - 导入错误 : cannot import name 'rnn_cell'