【问题标题】:What's the best way of using gps coordinate in regression model在回归模型中使用 gps 坐标的最佳方法是什么
【发布时间】:2018-10-29 14:43:22
【问题描述】:
在我的数据集中,我有两列以十进制表示的纬度和经度,我想将数据拟合到回归模型以进行价格预测。我想知道我应该对这两列进行什么样的数据转换?是否可以仅将给定的十进制值拟合到模型或需要转换?
我尝试使用 python geopandas 将它们转换为分类变量,但我的训练和测试中不匹配的分类变量不允许我拟合模型。
【问题讨论】:
标签:
python
geolocation
latitude-longitude
transformation
geopandas
【解决方案1】:
您需要k-nearest neighbors (kNN) 算法,尤其是kNN regression。
Scikit-learn 有两个kNN regression 的实现:
但值得注意的是使用haversine distance作为距离度量的重要性,它“根据经度和纬度确定球体上两点之间的大圆距离”,即使用地球的半径。
此外,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)