共享单车潮汐点分析——Task02


前言

几日前运行了大佬的baseline以后,便只是简单的提交了结果,没有进行代码解读,在后面的baseline改进任务中,由于才疏学浅所以打算先学习好baseline的详细思路,而后观摩大佬们的改进思路进行学习。


PS:以下多得于鱼佬和水哥的分享而记的学习笔记。

一、经纬度的匹配

由于赛题中需要定位潮汐点,因此需要进行相关计算得出每个停车点的流量,即匹配订单和单车轨迹数据,从而计算不同时间点每个停车点流入和流出单车的数量。
首先我们需要根据订单数据中提供的经纬度匹配到具体的停车点。

停车点处理

根据数据计算出每个停车点的中心经纬度以及根据最大最小经纬度之差估算停车点的面积

Geohash经纬度匹配

baseline中使用Geohash库对经纬度进行编码,通过控制presicion参数实现编码精度的控制。

这里的precision与具体的定位点范围强相关,需要根据具体的赛题要求完成设置。

(Geohash库的安装可能会出现一些问题,详情可参考上篇博客)
处理过后的数据如下图所示:
在这里插入图片描述

二、区域流量与潮汐统计

在划分好区域后,开始统计每个区域不同时间的客流量。

提取时间数据

使用透视表统计每个区域不同时间的流入流出量

得出bike_inflow与bike_outflow

进行数据可视化

如下便为geohash编码为’wsk52r’的区域每日不同时间的入流量和出流量的可视化图:
在这里插入图片描述

三、Geohash匹配计算潮汐

本算法的思路是按照天数统计好每日的单车流量,根据入流量和出流量计算每个位置每日的留存流量。而后根据街道的分布,使用留存车辆除以街道停车位的总面积计算每个街道的密度,按照密度的大小排序从而得到潮汐情况最严重的街道:
在这里插入图片描述

四、按照最近邻经纬度的距离匹配计算

此处可以使用sklearn中的NearestNeighbors,通过设置haversine距离完成最近停车点的计算,也可使用hnsw做近似搜索,按照订单计算与停车点的距离计算潮汐点。
前者可直接调用函数进行计算,精度较高且方便,但计算速度会很慢。
后者使用聚类思想将停车点归类,也是通过计算密度的方式得到各地的潮汐程度,此种方式速度较快但精度不如前者。


改进方向

  • 使用第二种方法直接对停车点按照经纬度进行聚类容易忽略建筑直接的关系,譬如有些地点在经纬度上相近可实际到达却要耗费数时,如果单凭经纬度推荐优化方案可能会适得其反。
  • 调整GeoHash Base32编码长度与精度。
  • 使用Geohash编码进行停车点优化时,辅以实际距离的计算,以确保方案的有效性
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值