转载加修改:Feature engineering: all I learnt about Geo-spatial features
1. 极坐标法
Add two new features of Polar coordinates to the dataset
x = Longitude;
y = Latitude
rot_x = x * cosθ + y * sinθ
rot_y = x * sinθ - y * cosθ
2. Add 4 new features of rotational Cartesian coordinates
def rotation(data):
'''
# most frequently used degrees are 30,45,60
input: dataframe containing Latitude(x) and Longitude(y)
'''
rot_45_x = (0.707 * data['x']) + (0.707 * data['y'])
rot_45_y = (0.707 * data['y']) + (0.707 * data['x'])
rot_30_x = (0.866 * data['x']) + (0.5 * data['y'])
rot_30_y = (0.866 * data['y']) + (0.5 * data['x'])
return rot_45_x, rot_45_y, rot_30_x, rot_30_y
目的:给树模型更多的空间特征信息。可以从不同的视角可视化坐标。还可以通过主成分分析(PCA)进行转换。
3.Haversine distance:
Haversine distance计算的是给定经度和纬度的球面上任意两点之间的大圆距离。它是三角学的一个组成部分,主要用于导航技术。在我们的例子中,我们必须将点转换为弧度度量,并输入地球的平均半径来计算两个点之间的距离。
def haversine_dist(lat1,lng1,lat2,lng2):
lat1, lng1, lat2, lng2 = map(np.radians, (lat1, lng1