海上安全治理是海洋发展中至关重要的环节,了解各个区域船只的工作情况以及具体位置,可以对于防止因为船只的碰撞等事故而造成的巨大损失,而要提升海上安全治理能力,首要任务是“看得清”,即看得清“是什么、谁在用、做什么”。船舶避碰终端(AIS)、北斗定位终端等通信导航设备的应用,给海上交通和作业带来了极大便利,但同时存在设备信息使用不规范造成的巨大人身和财产损失,给海上安全治理带来了新的挑战。本次赛题基于位置数据对海上目标进行智能识别和作业行为分析,要求选手通过分析渔船北斗设备位置数据,得出该船的生产作业行为,具体判断出是拖网作业、围网作业还是流刺网作业。

此处感谢qyxs的友情分享,关于第一名的代码,我们抽取部分精华简单介绍,详细的细节可以去文末参考qyxs的Github下载code慢慢品味。

本次大赛算法赛阶段第一名团队对经纬度进行geohash编码,

def geohash_encode(latitude, longitude, precision=12):"""Encode a position given in float arguments latitude, longitude toa geohash which will have the character count precision."""lat_interval, lon_interval = (-90.0, 90.0), (-180.0, 180.0)base32 = '0123456789bcdefghjkmnpqrstuvwxyz'geohash = []bits = [16, 8, 4, 2, 1]bit = 0ch = 0even = Truewhile len(geohash) < precision:if even:mid = (lon_interval[0] + lon_interval[1]) / 2if longitude > mid:ch |= bits[bit]lon_interval = (mid, lon_interval[1])else:lon_interval = (lon_interval[0], mid)else:mid = (lat_interval[0] + lat_interval[1]) / 2if latitude > mid:ch |= bits[bit]lat_interval = (mid, lat_interval[1])else:lat_interval = (lat_interval[0], mid)even = not evenif bit < 4:bit += 1else:geohash += base32[ch]bit = 0ch = 0return ''.join(geohash)

然后采用tfidf,countervector,w2v等转换抽取特征并结合诸多细致的统计特征作为最终的特征模块,最后采用LightGBM进行建模,该方案在AB榜单上都取得了Rank1的成绩,同时在AB榜单的第一第二阶段也都十分稳定。

关于tfidf,countervector和w2v等代码如下:

Tfidf代码:

def tfidf(input_values, output_num, output_prefix, seed=1024):tfidf_enc = TfidfVectorizer()tfidf_vec = tfidf_enc.fit_transform(input_values)svd_tmp = TruncatedSVD(n_components=output_num, n_iter=20, random_state=seed)svd_tmp = svd_tmp.fit_transform(tfidf_vec)svd_tmp = pd.DataFrame(svd_tmp)svd_tmp.columns = ['{}_tfidf_{}'.format(output_prefix, i) for i in range(output_num)]return svd_tmp

count2vec代码:

def count2vec(input_values, output_num, output_prefix, seed=1024):count_enc = CountVectorizer()count_vec = count_enc.fit_transform(input_values)svd_tmp = TruncatedSVD(n_components=output_num, n_iter=20, random_state=seed)svd_tmp = svd_tmp.fit_transform(count_vec)svd_tmp = pd.DataFrame(svd_tmp)svd_tmp.columns = ['{}_countvec_{}'.format(output_prefix, i) for i in range(output_num)]return svd_tmp

word2vec代码:

# workers设为1可复现训练好的词向量,但速度稍慢,若不考虑复现的话,可对此参数进行调整
def w2v_feat(df, group_id, feat, length):print('start word2vec ...')data_frame = df.groupby(group_id)[feat].agg(list).reset_index()model = Word2Vec(data_frame[feat].values, size=length, window=5, min_count=1, sg=1, hs=1,workers=1, iter=10, seed=1, hashfxn=hashfxn)data_frame[feat] = data_frame[feat].apply(lambda x: pd.DataFrame([model[c] for c in x]))for m in range(length):data_frame['w2v_{}_mean'.format(m)] = data_frame[feat].apply(lambda x: x[m].mean())del data_frame[feat]return data_frame

关于很多其他的细节和我们之前的一篇文章十分类似,此处不再做过多介绍,本文相关代码参见qyxs的Github: https://github.com/juzstu/TianChi_HaiYang

个人微信:加时请注明 (昵称+公司/学校+方向)

也欢迎小伙伴加入NLP交流群,刚刚创的,想和大家讨论NLP(若二维码过期可加作者微信)!

【比赛实战篇】智能算法赛:智慧海洋建设Top1方案代码相关推荐

  1. 【竞赛】智能算法赛:智慧海洋建设Top1方案代码

    海上安全治理是海洋发展中至关重要的环节,了解各个区域船只的工作情况以及具体位置,可以对于防止因为船只的碰撞等事故而造成的巨大损失,而要提升海上安全治理能力,首要任务是"看得清",即 ...

  2. 智慧海洋建设TOP方案借鉴学习与整理

    文章目录 数据探索与预处理 渔船作业方式的定义 渔船作业过程中的三种状态 预处理 特征工程 统计特征 表征渔船的轨迹 POI信息 基于轨迹序列绝对和相对位置的复合向量编码 表征渔船不同状态下的信息 A ...

  3. 智慧海洋建设TOP_1方案学习笔记

    文章目录 赛题 要求 数据 TOP1 解决方案 数据读取 特征工程 基本预处理 统计特征 基于轨迹序列绝对和相对位置的复合向量编码 Word2Vec 比赛来源:天池平台 智慧海洋建设 感谢大佬开源TO ...

  4. 【算法实战篇】时序多分类赛题-2020数字中国创新大赛-智慧海洋建设top5方案(含源码)

        Hi,大家好!这里是AILIGHT!AI light the world!这次给大家带来的是2020数字中国创新大赛-数字政府赛道-智能算法赛:智慧海洋建设的算法赛复赛赛道B top5的方案以 ...

  5. 【时序多分类赛题】2020数字中国创新大赛-智慧海洋建设top5方案(含源码)

       这次给大家带来的是2020数字中国创新大赛-数字政府赛道-智能算法赛:智慧海洋建设的算法赛复赛赛道B top5的方案以及代码开源.比赛传送门:https://tianchi.aliyun.com ...

  6. ​DCIC 2020:智慧海洋建设 开源方案复盘笔记

    一.赛题介绍 1.1 赛题背景 本赛题基于位置数据对海上目标进行智能识别和作业行为分析,要求选手通过分析渔船北斗设备位置数据,得出该船的生产作业行为,具体判断出是拖网作业.围网作业还是流刺网作业.初赛 ...

  7. 2020数字中国 天池——智慧海洋建设 Top1%

    文章目录 Solution 总结 这是前段时间参加的天池比赛,最终成绩:18/3275. 下面先给出我的solution,最后再写一点总结. Solution # coding: utf-8# In[ ...

  8. 2020DCIC智慧海洋建设算法赛学习01-赛题北京及地理数据分析常用工具

    序: 本系列的博客旨在学习2020DCIC智能算法赛-智慧海洋建设的优秀方案,对地理数据分析问题积累一些思路和经验. 作为这一系列博客的开篇,这篇博客主要内容包括对赛题的解析和对项目中会用到的一些常用 ...

  9. 模型融合(智慧海洋建设为例)

    模型融合(集成)--提高各种 ML 任务准确性的利器 本篇主要源于 Datawhale 智慧海洋建设-Task5 模型融合 最后一次的打卡任务,详细的叙述了关于模型融合的部分知识点. 目录 模型融合( ...

最新文章

  1. HDU 1248 寒冰王座
  2. 统计学习方法第十章作业:HMM模型—概率计算问题、Baum-Welch学习算法、维特比预测算法 代码实现
  3. 【转帖】漫话C++0x(四) —- function, bind和lambda
  4. LoaderManager使用详解(二)---了解LoaderManager
  5. React开发(150):判断方法有避免报错
  6. [转+整理]十道海量数据处理面试题与十个方法大总结
  7. Android官方开发文档Training系列课程中文版:构建第一款安卓应用之启动另一个Activity
  8. windows控制linux桌面图标,完全控制你的Windows桌面 (转)
  9. 【Servlet】Servlet生命周期
  10. Google浏览器调试前端代码
  11. Onvif开发之代码框架生成篇
  12. GDI+_VB6_ARGB
  13. Gadgets 侧边栏小工具 跟踪调试方法
  14. Install Air Conditioning HDU - 4756(最小生成树+树形dp)
  15. 凯撒/摩斯/栅栏/维吉尼亚/元音密码加解密的Python实现
  16. 条件表达式a?b:c是什么意思
  17. MATLAB三维图像与三重积分
  18. 记一个vue router相关的 Uncaught (in promise) undefined 问题
  19. Begin...end
  20. DDR3和DDR2和DDR的工作原理及技术区别

热门文章

  1. 日历查询的算法,如何确定某一天是星期几?
  2. ifive air刷OMA固件教程
  3. vscode安装了相应的库后导入仍然有警告
  4. Linux Socket 多客户端通信
  5. 由于登录失败而无法启动服务的解决方案
  6. 新浪微博因“明星势力榜”投诉问题被约谈
  7. C++map迭代器最全最容易理解
  8. win7 SP1 原版 32位 百度网盘下载
  9. 原生js实现http请求
  10. 必须收藏!23个Python爬虫开源项目代码:微信、淘宝、等