2020DCIC智能算法赛-智慧海洋建设(渔船分类)

项目通过分析渔船北斗设备位置数据,进行拖网、围网、流刺网作业的多分类任务。关键在于特征工程,包括使用Geohash解决数据冗余,采用Node2Vec和Word2Vec编码轨迹序列,以及利用TFIDF和CountVec。最终用lightGBM作为分类器,取得良好效果。
摘要由CSDN通过智能技术生成

最近忙于找工作,之前做的项目还没有总结过,这里就先简单的总结一下

项目要求通过分析渔船北斗设备位置数据,具体判断出是拖网作业、围网作业还是流刺网作业。即:“轨迹(序列数据)+多分类”的任务,评估指标选用的是F1值。

本项目的关键点就是对原始数据的特征工程:

baseline

(本人的baseline代码找不到了,所以这里借用已经公开的方法,方法基本一样,只不过本人的baseline引入了更多的统计量)

import os, sys, glob
import numpy as np
import pandas as pd

import time
import datetime

from joblib import Parallel, delayed
from sklearn.metrics import f1_score, log_loss, classification_report
from sklearn.model_selection import StratifiedKFold

import lightgbm as lgb

%pylab inline

def read_feat(path, test_mode=False):
    df = pd.read_csv(path)
    df = df.iloc[::-1]
    
    if test_mode:
        df_feat = [df['渔船ID'].iloc[0], df['type'].iloc[0]]
        df = df.drop(['type'], axis=1)
    else:
        df_feat = [df['渔船ID'].iloc[0]]
        
    df['time'] = df['time'].apply(lambda x: datetime.datetime.strptime(x, "%m%d %H:%M:%S"))
    df_diff = df.diff(1).iloc[1:]
    df_diff['time_seconds'] = df_diff['time'].dt.total_seconds()
    df_diff['dis'] = np.sqrt(df_diff['x']**2 + df_diff['y']**2)
    
    df_feat.append(df['time'].dt.day.nunique())
    df_feat.append(df['time'].dt.hour.min())
    df_feat.append(df['time'].dt.hour.max())
    df_feat.append(df['time'].dt.hour.value_counts().index[0])

    df_feat.append(df['速度'].min())
    df_feat.append(df[&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值