组队学习|DCIC2021算法分析题学习分享

在这里插入图片描述

本次主要针对学习baseline过程中未曾想到的方法与代码技巧进行分享

赛题分析

请添加图片描述

思路

通过共享单车订单数据与共享单车停车点数据进行匹配,可以获得不同时间共享单车在何处打开与关闭的数据。针对二者计算差值可以获得不同停车点的潮汐值,对比停车点的面积可以获得潮汐密度。

难点

  1. 停车点的面积应该如何计算?
  2. 如何将单车与停车点进行匹配?

数据预处理

如何定位每个停车点中心并求其面积?

  1. 将停车点的LOACTION处理成矩阵形式
  2. 找出每个停车点经纬度的最大值与最小值
  3. 通过对列求平均值获得停车点的中心经纬度
  4. 以最大最小经纬度之间的距离表停车点面积(利用geopy库的geodesic函数)
lambda x : geodesic((x['MIN_LATITUDE'], x['MIN_LONGITUDE']), (x['MAX_LATITUDE'], x['MAX_LONGITUDE'])).meters

停车点处理

方法一:基于geohash的停车点匹配潮汐点计算

原理

  • geohash是一个地理位置编码,根据二维的经纬度在地图上划分出许多矩形区域,每个矩形区域具有一个编码,根据编码可以大致确定某个点的地理区域范围
  • 通过geohash给每个停车位与共享单车订单位置进行编码,对二者进行匹配
import geohash

bike_order['geohash'] = bike_order.apply(
lambda x: geohash.encode(x['LATITUDE'], x['LONGITUDE'], precision=6), axis=1)
bike_fence['geohash'] = bike_fence['FENCE_CENTER'].apply( lambda x: geohash.encode(x[0], x[1], precision=6)
)
  • 结合订单状态、订单时间与geohash编码,可以获得不同区域单车的潮汐情况

实现过程

pivot_table透视表pivot_table(df,values,index,columns,aggfunc,fill_value)
index为表的行,columns为表的列,values为表中行列确定的值,aggfunc为聚合方法,fill_value填充空值

bike_flow = pd.pivot_table(bike_order[bike_order['LOCK_STATUS']==1],
values='LOCK_STATUS', index=['geohash'], 
columns=['DAY_HOUR'], aggfunc='count', fill_value=0)

在这里插入图片描述

方法二:基于距离匹配计算潮汐点

Nearestneighbors & hnsw近似搜索

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值