在我的数据集中,我有两列小数点的纬度和经度,我想将数据拟合到回归模型中以进行价格预测。我想知道我应该在这两列上做什么样的数据转换?是否可以将给定的十进制值拟合到模型中或者需要转换?
我尝试使用python geopandas将它们转换为分类变量,但我的火车和测试中不匹配的分类变量不允许我适应模型。
答案 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)