在回归模型

时间:2018-05-19 08:51:18

标签: python geolocation latitude-longitude transformation geopandas

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

我尝试使用python geopandas将它们转换为分类变量,但我的火车和测试中不匹配的分类变量不允许我适应模型。

1 个答案:

答案 0 :(得分:0)

您需要k-nearest neighbors(kNN)算法,尤其是kNN regression

Scikit学习有kNN regression的两种实现:

但是值得注意的是,使用haversine distance作为其距离度量的重要性,该度量“确定给定了它们的经度和纬度的球面上两个点之间的大圆距离”,即使用地球的半径。 / p>

另外,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)