潮汐点分析——Task02"/>
共享单车潮汐点分析——Task02
文章目录
- 前言
- 一、经纬度的匹配
- 停车点处理
- Geohash经纬度匹配
- 二、区域流量与潮汐统计
- 提取时间数据
- 使用透视表统计每个区域不同时间的流入流出量
- 进行数据可视化
- 三、Geohash匹配计算潮汐
- 四、按照最近邻经纬度的距离匹配计算
- 改进方向
前言
几日前运行了大佬的baseline以后,便只是简单的提交了结果,没有进行代码解读,在后面的baseline改进任务中,由于才疏学浅所以打算先学习好baseline的详细思路,而后观摩大佬们的改进思路进行学习。
PS:以下多得于鱼佬和水哥的分享而记的学习笔记。
一、经纬度的匹配
由于赛题中需要定位潮汐点,因此需要进行相关计算得出每个停车点的流量,即匹配订单和单车轨迹数据,从而计算不同时间点每个停车点流入和流出单车的数量。
首先我们需要根据订单数据中提供的经纬度匹配到具体的停车点。
停车点处理
根据数据计算出每个停车点的中心经纬度以及根据最大最小经纬度之差估算停车点的面积。
Geohash经纬度匹配
baseline中使用Geohash库对经纬度进行编码,通过控制presicion参数实现编码精度的控制。
这里的precision与具体的定位点范围强相关,需要根据具体的赛题要求完成设置。
(Geohash库的安装可能会出现一些问题,详情可参考上篇博客)
处理过后的数据如下图所示:
二、区域流量与潮汐统计
在划分好区域后,开始统计每个区域不同时间的客流量。
提取时间数据
使用透视表统计每个区域不同时间的流入流出量
得出bike_inflow与bike_outflow
进行数据可视化
如下便为geohash编码为’wsk52r’的区域每日不同时间的入流量和出流量的可视化图:
三、Geohash匹配计算潮汐
本算法的思路是按照天数统计好每日的单车流量,根据入流量和出流量计算每个位置每日的留存流量。而后根据街道的分布,使用留存车辆除以街道停车位的总面积计算每个街道的密度,按照密度的大小排序从而得到潮汐情况最严重的街道:
四、按照最近邻经纬度的距离匹配计算
此处可以使用sklearn中的NearestNeighbors,通过设置haversine距离完成最近停车点的计算,也可使用hnsw做近似搜索,按照订单计算与停车点的距离计算潮汐点。
前者可直接调用函数进行计算,精度较高且方便,但计算速度会很慢。
后者使用聚类思想将停车点归类,也是通过计算密度的方式得到各地的潮汐程度,此种方式速度较快但精度不如前者。
改进方向
- 使用第二种方法直接对停车点按照经纬度进行聚类容易忽略建筑直接的关系,譬如有些地点在经纬度上相近可实际到达却要耗费数时,如果单凭经纬度推荐优化方案可能会适得其反。
- 调整GeoHash Base32编码长度与精度。
- 使用Geohash编码进行停车点优化时,辅以实际距离的计算,以确保方案的有效性
更多推荐
共享单车潮汐点分析——Task02
发布评论