1 两个经度/纬度的相减
使用相邻经度进行相减,相邻纬度相减,类似于经纬度的绝对变化特征
def lat_diff(lat1, lat2):
return lat1 - lat2
def lat_absdiff(lat1, lat2):
return abs(lat1 - lat2)
def lng_diff(lng1, lng2):
return lng1 - lng2
def lng_absdiff(lng1, lng2):
return abs(lng1 - lng2)
2 两个经度/纬度的相除
计算两个经度或者纬度的相除,减法如果是绝对特征,那么相除可以认为是相对特征
def lat_ratio(lat1, lat2):
return lat2 / lat1
def lgn_ratio(lgn1, lgn2):
return lgn2 / lgn1
3 经纬度相除
计算经纬度的相除的特征,类似于斜度计算
def lng_lat_ratio(lat1,lng1):
return lng1 / lat1
def lat_lng_ratio(lgn1, lgn2):
return lat1 / lgn1
4 两个经纬度的欧几里得距离计算
计算两个经纬度之间的欧几里得距离
def euclidean_distance(lat1, lng1, lat2, lng2):
return np.sqrt((lat1 - lat2) ** 2 + (lng1 - lng2) ** 2)
5 两个经纬度的Manhattan距离计算
计算两个经纬度之间的Manhattan距离
def manhattan_distance(lat1, lng1, lat2, lng2):
return abs(lat1 - lat2) + abs(lng1 - lng2)
6 经纬度与斜边的比例特征
类似于三角形中两个直角边与斜边的比例信息
def lat_lng_hypotenuse_ratio(lat1, lng1):
hypotenuse = np.sqrt((lat1 ** 2 + lng1 ** 2))
return lat1 / hypotenuse, lng1/ hypotenuse
7 基于经纬度的聚类1
基于经纬度进行聚类,将经纬度聚类的结果当做特征,例如常用的Kmeans。
此处我们用1表示,在第二部分我们会介绍升级版
from sklearn.cluster import MiniBatchKMeans
coords = np.vstack((train[['pickup_latitude', 'pickup_longitude']].values,
train[['dropoff_latitude', 'dropoff_longitude']].values,
test[['pickup_latitude', 'pickup_longitude'