在回归模型中使用 GPS 坐标的最佳方法是什么



在我的数据集中,我有两列十进制的纬度和经度,我想将数据拟合到回归模型中以进行价格预测。我想知道我应该对这两列进行什么样的数据转换?是否可以仅将给定的十进制值拟合到模型中,或者需要进行转换?

我尝试在python geopandas中使用将它们转换为分类变量,但是我的训练和测试中的不匹配分类变量不允许我拟合模型。

你需要k-最近邻(kNN(算法,特别是kNN回归。

Scikit-learn有两种kNN回归实现:

  • KNeighborsRegressor - 查找点的 K 邻居
  • RadiusNeighborsRegressor - 查找一个或多个点的给定半径内的邻居

但值得注意的是使用哈弗正弦距离作为距离度量的重要性,它"根据经度和纬度确定球体上两点之间的大圆距离",即使用地球半径。

此外,python 和 scikit-learn 期望弧度超过度(纬度/纬度(,因此必须首先转换您的值。

一个基本的例子如下:

from math import radians
from sklearn.neighbors import KNeighborsRegressor
from sklearn.model_selection import train_test_split
dat['Latitude'] = dat['Latitude'].apply(radians)
dat['Longitude'] = dat['Longitude'].apply(radians)
X = dat[['Latitude', 'Longitude']].values
y = dat['Price'].values
X_train, X_test, y_train, y_test 
= train_test_split(X, y, test_size=0.25)
nbrs = KNeighborsRegressor(weights='distance', metric='haversine')
nbrs.fit(X_train, y_train)
y_pred = nbrs.predict(X_test)

最新更新