【竞赛】智能算法赛:智慧海洋建设Top1方案代码
海上安全治理是海洋發展中至關重要的環節,了解各個區域船只的工作情況以及具體位置,可以對于防止因為船只的碰撞等事故而造成的巨大損失,而要提升海上安全治理能力,首要任務是“看得清”,即看得清“是什么、誰在用、做什么”。船舶避碰終端(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_tmpcount2vec代碼:
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
往期精彩回顧適合初學者入門人工智能的路線及資料下載機器學習及深度學習筆記等資料打印機器學習在線手冊深度學習筆記專輯《統計學習方法》的代碼復現專輯 AI基礎下載機器學習的數學基礎專輯獲取一折本站知識星球優惠券,復制鏈接直接打開:https://t.zsxq.com/yFQV7am本站qq群1003271085。加入微信群請掃碼進群:總結
以上是生活随笔為你收集整理的【竞赛】智能算法赛:智慧海洋建设Top1方案代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 设计赋能,数联杭温!2020温州“市长杯
- 下一篇: 【效率】又来一个Windows神器!!!