精华内容
下载资源
问答
  • 竞赛数据集来自互联网视频,总量不少于1万段,其中包含共6类,每类不少于200段的特定行为视频。每段特定行为视频至少包含一段起止位置完整的某类特定行为,并包含与特定行为无关的背景视频内容,视频的平均帧率为24...

    参赛背景

    3周前,接到一项任务是准备视频行为识别模型并参赛。
    竞赛数据集来自互联网视频,总量不少于1万段,其中包含共6类,每类不少于200段的特定行为视频。每段特定行为视频至少包含一段起止位置完整的某类特定行为,并包含与特定行为无关的背景视频内容,视频的平均帧率为24FPS,时长区间为20s-200s之间。

    赛题分析

    该赛题是典型的视频行为识别任务,特点在于需要同时分析视频图像内容与视频图像变化信息,主要的方案有传统光流分析、骨架跟踪、卷积识别、序列预测等。在此基础上还衍生了行为检测的方案,此处不提。

    参考任务概述及多篇论文后,整理方案树如下

    • 传统方案:iDT
    • 骨架跟踪:OpenPose、stgcn、lstm
    • 卷积识别:双流法、TSN、C3D、双流I3D、多尺度卷积
    • 序列预测:骨架序列、双流序列
    • 行为检测:CDC、R-C3D

    在这里插入图片描述

    方案选取

    经过分析,当前识别效果较好且经过验证的网络模型有 tsn、i3d、slowfast。经过验证,i3d所需求的光流提取无法在比赛期间完成,因此选择tsn网络参赛。
    tsn网络基于双流卷积,论文水平为UCF-94.2%,HMDB-69.4%
    该网络的处理特点如下:

    1. 提取RGBdifferencewarpedOpticalFlowField两种特征,同图像流、光流一起输入到网络中
    2. 使用BN-Inception作为特征提取网络
    3. 通过跨模态预训练、正则化、数据增强等操作,提高模型质量

    参赛要点

    数据收集

    由于赛事组织者没有提供足够的训练样本,视频数据需要自己完成收集。
    这里选择了某大型视频网站,选取符合类别的短视频进行下载。
    由于网络视频具有个人色彩,需要对下载视频进行分段,筛除与主题无关片段。
    然后需要对分段视频进行标注及数据均衡的操作,训练集数据比例为5:1:1:1:1:1:1

    工程组织

    这里选择了百度深度学习paddle paddle,其提供了较便捷的训练、推断api,地址如下:
    https://www.paddlepaddle.org.cn/modelbasedetail/tsn
    https://github.com/PaddlePaddle/models/blob/develop/PaddleCV/video/models/tsn/README.md
    工程部署上面,使用了docker容器环境,Ubuntu16.04,Cuda10.1,python 3.6,paddle-gpu 1.8.4

    参赛总结

    1. 一定要找到合适的训练集样本比例,这个需要反复训练并测试,使得最终结果比例达成理想结果
    2. 视频分段并筛选是损失收敛的重要前提,由于tsn分段的特性,可以确保分段训练得出的模型在原始视频上有较好效果
    3. 视频预处理上面需要提前做好规划,有些模型视频信息提取环节耗时太长,无法满足快速训练、推测的要求
    4. 要对所选模型的训练时间、推测时间有明确的认知,避免出现由于时间规划失误带来的结果损失
    5. 服务器环境要提前熟悉,比赛开始后需要服务器环境与本地同步推进,这样可以更有效的利用比赛时间
    6. 比赛还是要摆正心态,避免由于慌乱出现操作失误,要学会笑着去面对竞赛,并在竞赛中不断学习、积累
    展开全文
  • 2020招行Fintech数据竞赛总结

    千次阅读 2020-06-12 09:33:35
    希望参赛选手基于训练数据集,通过有效的特征提取,构建信用违约预测模型,并将模型应用在评分数据集上,输出评分数据集中每个用户的违约概率。 一、 数据预处理 (1)观察数据分布。这里要将tag表训练数据和测试...

    目录

    赛题背景

    一、 数据预处理

    二、特征工程

    (1)tag表构造特征

    (2)trd表构造特征

    (3)beh表特征构造

    (4)连接数据

    三、建立模型预测

    四、总结


    赛题背景

    主办方提供了两个数据集(训练数据集和评分数据集),包含用户标签数据、过去60天的交易行为数据、过去30天的APP行为数据。希望参赛选手基于训练数据集,通过有效的特征提取,构建信用违约预测模型,并将模型应用在评分数据集上,输出评分数据集中每个用户的违约概率。

    一、 数据预处理

    (1)观察数据分布。这里要将tag表训练数据和测试数据连接方便做特征工程,其他表也做相似处理。

    #加载tag表数据
    train_tag = pd.read_csv('train_data/train_tag.csv')
    test_tag = pd.read_csv('test_data/test_tag.csv')
    #将训练数据和测试数据连接方便做特征
    df_tag=pd.concat([train_tag,test_tag],axis=0,ignore_index=True)
    #观察数据大致分布
    for feature in list(df_tag):
        print(feature + "的特征分布如下:")
        print("{}特征有个{}不同的值".format(feature,df_tag[feature].nunique()))
        print(df_tag[feature].value_counts())

    (2)查找空值。发现教育背景相关的两个特征和信用卡还贷方式出现大量缺失,所以删去。

    df_tag.isnull().sum()#观察缺失数据
    df_tag = df_tag.drop(['edu_deg_cd','deg_cd','atdd_type'],axis=1)#三个特征缺失值较多,删掉

     (3)填充无效字符'\N'。对于部分特征'\N'都为500个左右,可能有特殊含义,选择用-1填充,其余都用0填充;将字符型特征编码。

    #填充数值特征,根据数值分布筛选出部分特征用0填充'\N',其余使用'-1'填充
    col_0 = ['job_year','frs_agn_dt_cnt','fin_rsk_ases_grd_cd','confirm_rsk_ases_lvl_typ_cd',
             'tot_ast_lvl_cd','pot_ast_lvl_cd','hld_crd_card_grd_cd','l1y_crd_card_csm_amt_dlm_cd',
             'l12mon_buy_fin_mng_whl_tms','l12_mon_fnd_buy_whl_tms','l12_mon_insu_buy_whl_tms','l12_mon_gld_buy_whl_tms']
    for col in col_0:
        df_tag[col].replace('\\N','0',inplace=True)
    
    df_tag.replace('\\N',-1,inplace=True)
    
    #将类别特征转化编码
    str_col = ['gdr_cd','mrg_situ_cd','acdm_deg_cd']
    for col in str_col:
        df_tag[col] = pd.factorize(df_tag[col])[0]
    

    (4)对特征做分桶处理,并将'age','job_year'做均值编码。

    #对分布极不均衡的特征做截断处理
    df_tag['l12mon_buy_fin_mng_whl_tms'] = df_tag['l12mon_buy_fin_mng_whl_tms'].astype('int').map(lambda x:x if x<5 else 5)
    df_tag['l12_mon_fnd_buy_whl_tms'] = df_tag['l12_mon_fnd_buy_whl_tms'].astype('int').map(lambda x:x if x<6 else 6)
    df_tag['l12_mon_insu_buy_whl_tms'] = df_tag['l12_mon_insu_buy_whl_tms'].astype('int').map(lambda x: x if x==0 else 1)
    df_tag['l12_mon_gld_buy_whl_tms'] = df_tag['l12_mon_gld_buy_whl_tms'].astype('int').map(lambda x:x if x==0 else 1)
    df_tag['age'] = df_tag['age'].astype('int').map(lambda x:x if x<60 else 60)
    df_tag['fin_rsk_ases_grd_cd'] = df_tag['fin_rsk_ases_grd_cd'].astype('int').map(lambda x:x if x<=5 else 7)
    df_tag['confirm_rsk_ases_lvl_typ_cd'] = df_tag['confirm_rsk_ases_lvl_typ_cd'].astype('int').map(lambda x:x if x<=5 else 6)
    df_tag['ovd_30d_loan_tot_cnt'] = df_tag['ovd_30d_loan_tot_cnt'].astype('int').map(lambda x:x if x==0 else 1)
    df_tag['his_lng_ovd_day'] = df_tag['his_lng_ovd_day'].astype('int').map(lambda x: x if x<2 else 2)
    df_tag['cur_debit_cnt'] = df_tag['cur_debit_cnt'].astype('int').map(lambda x:x if x<10 else 10)
    df_tag['cur_credit_cnt'] = df_tag['cur_credit_cnt'].astype('int').map(lambda x: x if x<6 else 6)
    #'job_year'分桶处理
    def group_bin(x):
        if x<20:
            return x
        elif 20<=x<25:
            return 23
        elif 25<=x<30:
            return 27
        else:
            return 30
    df_tag['job_year'] = df_tag['job_year'].astype('int').map(group_bin)
    #均值编码
    df_tag['job_year_mean_code'] = df_tag.groupby('job_year')['flag'].transform('mean')
    df_tag['age_mean_code'] = df_tag.groupby('age')['flag'].transform('mean')

    二、特征工程

    (1)tag表构造特征

    对信用卡天数、借记卡天数、信用卡等级等一系列特征进行相乘,目的使用户之间的差距增大。

    #信用卡:持卡天数*等级
    df_tag['credit_level1']=df_tag['cur_credit_min_opn_dt_cnt']*pd.to_numeric(df_tag['l1y_crd_card_csm_amt_dlm_cd'])
    df_tag['credit_level2']=df_tag['cur_credit_min_opn_dt_cnt']*pd.to_numeric(df_tag['perm_crd_lmt_cd'])
    df_tag['credit_level3']=df_tag['cur_credit_min_opn_dt_cnt']*pd.to_numeric(df_tag['hld_crd_card_grd_cd'])
    df_tag['level_level']=pd.to_numeric(df_tag['l1y_crd_card_csm_amt_dlm_cd'])*pd.to_numeric(df_tag['perm_crd_lmt_cd'])  #等级*等级
    df_tag['credit_amount']=df_tag['cur_credit_min_opn_dt_cnt']*df_tag['cur_credit_cnt']    #持卡天数*持卡数量
    #信用卡:持卡数量*等级
    df_tag['amount_level1']=df_tag['cur_credit_cnt']*pd.to_numeric(df_tag['perm_crd_lmt_cd'])
    df_tag['amount_level2']=df_tag['cur_credit_cnt']*pd.to_numeric(df_tag['l1y_crd_card_csm_amt_dlm_cd'])
    df_tag['amount_level3']=df_tag['cur_credit_cnt']*pd.to_numeric(df_tag['hld_crd_card_grd_cd'])
    df_tag.shape

    (2)trd表构造特征

    这是本次比赛最重要的一个表了,它提供了交易类别,交易金额和交易时间的特征。我们可以做大量的统计。其中利用RFM模型作为指导,统计最近交易,交易频率,交易金额可以有效提升模型效果。

    • 将原始数据按日,周,月,是否为节假日划分;提取最后一次交易时间,最后一日,最后一周。
    from datetime import datetime
    df_trd['trx_tm'] = pd.to_datetime(df_trd['trx_tm'])
    df_trd['trx_month'] = df_trd['trx_tm'].dt.month#交易月份
    df_trd['trx_day'] = df_trd['trx_tm'].apply(lambda x:x.strftime('%Y-%m-%d'))#交易日期
    df_trd['week_no'] = df_trd['trx_tm'].map(lambda x:x.isocalendar()[1])#交易周
    
    df_trd['last_trx_tm'] = df_trd.groupby('id')['trx_tm'].transform('max')#提取最后一次交易时间
    df_trd['last_day'] = df_trd.groupby('id')['trx_day'].transform('max')#提取最后一次交易日期
    df_trd['last_week'] = df_trd.groupby('id')['week_no'].transform('max')#最后一周
    print('df_trd is done')
    
    #节假日划分,节假日记作0,工作日记作1
    cal = Calendar(workdays=[MO,TU,WE,TH,FR], holidays=['2019-06-07', '2019-06-08','2019-06-09',
                                                        '2019-05-01','2019-05-02','2019-05-03','2019-05-04'])
    df_trd['is_weekday'] = df_trd['trx_day'].map(lambda x:1 if cal.isbusday(x) else 0)
    • 首先对原始数据的交易额做统计,包括最大交易额,最小交易额,标准差,均值等等。同时统计最后一次,最后一天,最后一周的情况。 
    #t1统计交易余额,交易次数,最小交易额,最大交易额,交易额标准差,交易平均值
    t0 = df_trd[['id','flag']].drop_duplicates().reset_index(drop=True)
    t1 = df_trd.groupby('id',as_index=False)['cny_trx_amt'].agg(
        {'trx_sum':'sum','trx_count':'count','trx_min':'min','trx_max':'max','trx_std':'std','trx_mean':'mean'})
    t2 = df_trd.groupby('id',as_index=False)['trx_day'].agg({'trx_days':'nunique'})#交易天数
    
    #t3计算最后一次交易余额
    t3 = df_trd[df_trd['trx_tm']==df_trd['last_trx_tm']].groupby('id',as_index=False)['cny_trx_amt'].agg({'last_amt':'sum'})
    
    #t4统计最后一天交易余额,交易次数,最小交易额,最大交易额,交易额标准差,交易平均值
    t4 = df_trd[df_trd['trx_day']==df_trd['last_day']].groupby('id',as_index=False)['cny_trx_amt'].agg(
        {'last_day_sum':'sum','last_day_count':'count','last_day_min':'min',
         'last_day_max':'max','last_day_mean':'mean','last_day_std':'std'})
    
    #t5统计最后一周交易余额,交易次数,最小交易额,最大交易额,交易额标准差,交易平均值
    t5 = df_trd[df_trd['week_no']==df_trd['last_week']].groupby('id',as_index=False)['cny_trx_amt'].agg(
        {'last_week_sum':'sum','last_week_count':'count','last_week_min':'min',
         'last_week_max':'max','last_week_mean':'mean','last_week_std':'std'})
    
    merge1 = pd.merge(t0,t1,on='id',how='left')
    merge2 = pd.merge(merge1,t2,on='id',how='left')
    merge3 = pd.merge(merge2,t3,on='id',how='left')
    merge4 = pd.merge(merge3,t4,on='id',how='left')
    merge5 = pd.merge(merge4,t5,on='id',how='left')
    t = merge5
    t.shape
    •  统计交易方向的交易金额和交易天数。
    #交易方向做细致的分类统计
    df_trd[['is_weekday','last_week','Trx_Cod1_Cd','Trx_Cod2_Cd','trx_month']] = df_trd[['is_weekday','last_week',
                                                                                         'Trx_Cod1_Cd','Trx_Cod2_Cd','trx_month']].astype('str')
    cols = ['Dat_Flg1_Cd']
    for col in cols:
        for fea in list(df_trd[col].unique()): 
            t1 = df_trd[df_trd[col]==fea].groupby('id',as_index=False)['cny_trx_amt'].agg(
                {col+'_'+fea+'_sum':'sum',col+'_'+fea+'_count':'count',col+'_'+fea+'_min':'min',
                 col+'_'+fea+'_max':'max',col+'_'+fea+'_std':'std',col+'_'+fea+'_mean':'mean'})
            t2 = df_trd[df_trd[col]==fea].groupby('id',as_index=False)['trx_day'].agg(
                {col+'_'+fea+'_days':'nunique'})
            merge1 = pd.merge(t,t1,on='id',how='left')
            merge2 = pd.merge(merge1,t2,on='id',how='left')
            t = merge2
        print(col+' is done')
    #交易月份,工作日,支付方式,收支一级分类代码
    cols = ['trx_month','is_weekday','Dat_Flg3_Cd','Trx_Cod1_Cd']
    for col in cols:
        for fea in list(df_trd[col].unique()):
            #交易金额统计
            t1 = df_trd[(df_trd[col]==fea)].groupby('id',as_index=False)['cny_trx_amt'].agg(
                {col+'_'+fea+'_sum':'sum',col+'_'+fea+'_count':'count',col+'_'+fea+'_min':'min',
                 col+'_'+fea+'_max':'max',col+'_'+fea+'_std':'std',col+'_'+fea+'_mean':'mean'})
            #交易天数
            t2 = df_trd[df_trd[col]==fea].groupby('id',as_index=False)['trx_day'].agg(
                {col+'_'+fea+'_days':'nunique'})
            #收入金额统计
            t3 = df_trd[(df_trd[col]==fea)&(df_trd['cny_trx_amt']>0)].groupby('id',as_index=False)['cny_trx_amt'].agg(
                {col+'_'+fea+'_income_sum':'sum',col+'_'+fea+'_income_count':'count',col+'_'+fea+'_income_min':'min',
                 col+'_'+fea+'_income_max':'max',col+'_'+fea+'_income_std':'std',col+'_'+fea+'_income_mean':'mean'})
            #支出金额统计
            t4 = df_trd[(df_trd[col]==fea)&(df_trd['cny_trx_amt']<=0)].groupby('id',as_index=False)['cny_trx_amt'].agg(
                {col+'_'+fea+'_pay_sum':'sum',col+'_'+fea+'_pay_count':'count',col+'_'+fea+'_pay_min':'min',
                 col+'_'+fea+'_pay_max':'max',col+'_'+fea+'_pay_std':'std',col+'_'+fea+'_pay_mean':'mean'})       
            
            merge1 = pd.merge(t,t1,on='id',how='left')
            merge2 = pd.merge(merge1,t2,on='id',how='left')
            merge3 = pd.merge(merge2,t3,on='id',how='left')
            merge4 = pd.merge(merge3,t4,on='id',how='left')
            t = merge4
        print(col+' is done')
    #收支二级分类代码特征取值太多,只计算分类交易次数
    col = 'Trx_Cod2_Cd'
    for fea in list(df_trd[col].unique()): 
        t1 = df_trd[df_trd[col]==fea].groupby('id',as_index=False)['cny_trx_amt'].agg({col+'_'+fea+'_count':'count'})
        t = pd.merge(t,t1,on='id',how='left')
    
    #计算收支二级分类代码分类平均交易次数
    t0 = df_trd.groupby(['id','Trx_Cod2_Cd'],as_index=False)['cny_trx_amt'].agg({'Cod2_count':'count'})
    t1  = t0.groupby(['id'],as_index=False)['Cod2_count'].agg({'mean_Cod2_count':'mean'})
    t = pd.merge(t,t1,on='id',how='left')
    print(col+' is done')
    t.shape
    • 最后再统计单次交易,单日交易和交易金额汇总的情况。这里,'Dat_Flg1_Cd'是交易方向,B代表支出方向,C代表收入方向。
    t['day_trx_amt'] = t['trx_sum']/t['trx_days']#每日交易金额
    t['one_trx_amt'] = t['trx_count']/t['trx_days']#每日交易次数
    
    t['total_trx_amt'] = t['Dat_Flg1_Cd_C_sum'] - t['Dat_Flg1_Cd_B_sum']#交易额总和
    t['income_ratio'] = t['Dat_Flg1_Cd_C_sum']/t['total_trx_amt']#收入占交易总和比重
    t['expend_ratio'] = -t['Dat_Flg1_Cd_B_sum']/t['total_trx_amt']#支出占交易总和比重
    
    t['day_income_amt'] = t['Dat_Flg1_Cd_C_sum']/t['Dat_Flg1_Cd_C_days']#单日收入金额
    t['day_expend_amt'] = -t['Dat_Flg1_Cd_B_sum']/t['Dat_Flg1_Cd_B_days']#单日支出金额
    

    (3)beh表特征构造

    这张表记录的用户数量太少,无论怎么做最后连接tag表都会产生大量缺失,所以只做部分统计。

    • 和trd表一样统计访问日期,访问的最后一天,最后一次访问时间。
    df_beh['visit_tm'] = pd.to_datetime(df_beh['Unnamed: 3'])
    df_beh['visit_day'] = df_beh['visit_tm'].dt.day#提取访问日期
    
    df_beh['last_visit_day'] = df_beh.groupby('id')['visit_day'].transform('max')#最后访问日期
    df_beh['last_visit_tm'] = df_beh.groupby('id')['visit_tm'].transform('max')#最后访问时间
    df_beh.head()
    • 统计总访问次数,访问天数,访问页面数量,最后一天的访问页面数量和访问次数。另外,统计各页面访问次数。
    t0 = df_beh[['id','flag']].drop_duplicates().reset_index(drop=True)
    t1 = df_beh.groupby('id',as_index=False)['page_no'].agg({'page_count':'count','page_unique':'nunique'})#统计访问页面次数,访问页面数量
    t2 = df_beh[df_beh['visit_day']==df_beh['last_visit_day']].groupby('id',as_index=False)['page_no'].agg(
        {'last_page_cnt':'count','last_page_unique':'nunique'})#统计最后一天访问页面次数,访问页面数量
    t3 = df_beh.groupby('id',as_index=False)['visit_day'].agg({'day_unique':'nunique'})#访问天数
    merge1 = pd.merge(t0,t1,on='id',how='left')
    merge2 = pd.merge(merge1,t2,on='id',how='left')
    merge3 = pd.merge(merge2,t3,on='id',how='left')
    t = merge3
    
    #各访问页面的访问次数分类统计
    col = 'page_no'
    for fea in list(df_beh[col].unique()): 
        t1 = df_beh[df_beh[col]==fea].groupby('id',as_index=False)['page_no'].agg({col+'_'+fea+'_count':'count'})
        t = pd.merge(t,t1,on='id',how='left')
    print(col+' is done')

    (4)连接数据

    连接tag,trd,beh三表数据,划分训练集和测试集。由于连接之后会产生大量空值,所以用0填充。

    #将三表连接,并填充缺失值
    temp = pd.merge(df_tag1,df_trd1,on=['id','flag'],how='left')
    df = pd.merge(temp,df_beh1,on=['id','flag'],how='left')
    df = df.fillna(0)
    
    #将训练数据和测试数据分开
    df_train = df[df['flag'].notnull()]
    df_test = df[df['flag'].isnull()].drop(['flag'],axis=1)

    三、建立模型预测

    特征工程生成373个特征,使用xgboost筛选重要程度前200的特征。

    from xgboost import XGBClassifier
    model = XGBClassifier(colsample_bytree=0.6,max_depth=6,reg_alpha=0.05,subsample=0.7,\
                          objective='binary:logistic',n_job=-1,booster='gbtree',\
                          n_estimators=1000,learning_rate=0.02,gamma=0.7)
    
    folds = KFold(n_splits=5, shuffle=True, random_state=6)
    predictions = 0
    for fold_, (trn_idx, val_idx) in enumerate(folds.split(dftrain_X, dftrain_Y)):
        print('Fold:', fold_+1)
        tr_x, tr_y = dftrain_X.iloc[trn_idx, :], dftrain_Y[trn_idx]
        vl_x, vl_y = dftrain_X.iloc[val_idx, :], dftrain_Y[val_idx]
        
        model.fit(tr_x, tr_y,
            eval_set=[(vl_x, vl_y)],
            eval_metric='auc',
            early_stopping_rounds=100,
            verbose=50)
        y_prob = model.predict_proba(vl_x)[:,1]
        print(roc_auc_score(vl_y, y_prob))
        predictions += roc_auc_score(vl_y, y_prob)/5
    print("最终模型auc:", predictions)

    四、总结

    1. 本次正式参赛线下auc约为0.750,线上0.769。上述方案是我在原有基础上的赛后改进,五折交叉检验结果线下0.7626。
    2. 用户标签表。由于部分特征分布极不均衡做分箱处理;对可能有实际意义的无效字符'\N'做选择性填充;对信用卡的特征做特殊处理增强特征表达。
    3. 用户交易表。对交易表原始特征分类统计交易金额最大值,最小值,均值和交易频率等信息;结合RFM模型,按日,周,月统计交易金额,计算最后一次,最后一日,最后一周的交易情况。
    4. App访问表。由于这张表连接之后会有大量缺失值,所以只统计了总访问次数,访问页面数量,访问天数和各页面访问次数。统计最后一天的访问页面数量和访问次数。
    5. 特征工程很重要。特征工程和业务结合在提升模型效果上有很大作用,模型调参提升比较有限。

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • 前言: 本博客主要针对此次比赛做一些数据分析与总结,将我的思路分享给大家,开源的代码只整理了主要的model设计...想要系统学习机器学习和数据竞赛的知识,请参见我的博客:数据竞赛入门资料与参赛经验分享  ...

    前言:

    本博客主要针对此次比赛做一些数据分析与总结,将我的思路分享给大家,开源的代码只整理了主要的model设计,不包含详细的数据分析过程——源代码传输门(TingNie)

    想要系统学习机器学习和数据竞赛的知识,请参见我的博客:数据竞赛入门资料与参赛经验分享

     

    展开全文
  • 房价租金预测竞赛总结1:数据探索性分析任务要求数据概况数据集字段说明评分指标数据分析总体情况类别特征和数值特征缺失值分析单调特征列分析特征unique分析统计特征值频次大于100的特征label分布编码问题 ...

    任务要求

    比赛要求参赛选手根据给定的数据集,建立模型,预测房屋租金。
    赛题连接:房价租金预测

    数据概况

    数据集中的数据类别包括租赁房源、小区、二手房、配套、新房、土地、人口、客户、真实租金等。

    数据集字段说明

    对于小区信息中,关于city、region、plate三者的关系:city>region>plate。
    土地数据中,土地楼板面积是指在土地上建筑的房屋总面积。

    评分指标

    回归结果评价标准采用R-Square。
     score =1i=1m(y^iyi)2i=1m(yiyˉ)2\text { score }=1-\frac{\sum_{i=1}^{m}\left(\widehat{y}_{i}-y_{i}\right)^{2}}{\sum_{i=1}^{m}\left(y_{i}-\bar{y}\right)^{2}}
    其中,yiy_{i}表示真实值,y^i\widehat{y}_{i}表示预测值,yˉ\bar{y}表示样本均值。得分越高拟合效果越好。
    R2R^{2}用于度量因变量的变异中可由自变量解释部分所占的比例,取值范围是 0~1,R2R^{2}越接近1,表明回归平方和占总平方和的比例越大,回归线与各观测点越接近,用x的变化来解释y值变化的部分就越多,回归的拟合程度就越好。所以R2R^{2}也称为拟合优度(Goodness of Fit)的统计量。

    数据分析

    导入数据分析所用的包

    import warnings
    warnings.filterwarnings('ignore')
    
    import pandas as pd
    import matplotlib.pyplot as plt
    import seaborn as sns
    

    总体情况

    导入数据

    # 载入数据
    data_train = pd.read_csv('../data/train_data.csv')
    data_train['Type'] = 'Train'
    data_test = pd.read_csv('../data/test_a.csv')
    data_test['Type'] = 'Test'
    data_all = pd.concat([data_train, data_test], ignore_index=True)
    # 总体情况一览
    print(data_train.info())
    print(data_train.describe())
    print(data_train.head())
    

    结果:

    <class 'pandas.core.frame.DataFrame'>
    RangeIndex: 41440 entries, 0 to 41439
    Data columns (total 52 columns):
    ID                    41440 non-null int64
    area                  41440 non-null float64
    rentType              41440 non-null object
    houseType             41440 non-null object
    houseFloor            41440 non-null object
    totalFloor            41440 non-null int64
    houseToward           41440 non-null object
    houseDecoration       41440 non-null object
    communityName         41440 non-null object
    city                  41440 non-null object
    region                41440 non-null object
    plate                 41440 non-null object
    buildYear             41440 non-null object
    saleSecHouseNum       41440 non-null int64
    subwayStationNum      41440 non-null int64
    busStationNum         41440 non-null int64
    interSchoolNum        41440 non-null int64
    schoolNum             41440 non-null int64
    privateSchoolNum      41440 non-null int64
    hospitalNum           41440 non-null int64
    drugStoreNum          41440 non-null int64
    gymNum                41440 non-null int64
    bankNum               41440 non-null int64
    shopNum               41440 non-null int64
    parkNum               41440 non-null int64
    mallNum               41440 non-null int64
    superMarketNum        41440 non-null int64
    totalTradeMoney       41440 non-null int64
    totalTradeArea        41440 non-null float64
    tradeMeanPrice        41440 non-null float64
    tradeSecNum           41440 non-null int64
    totalNewTradeMoney    41440 non-null int64
    totalNewTradeArea     41440 non-null int64
    tradeNewMeanPrice     41440 non-null float64
    tradeNewNum           41440 non-null int64
    remainNewNum          41440 non-null int64
    supplyNewNum          41440 non-null int64
    supplyLandNum         41440 non-null int64
    supplyLandArea        41440 non-null float64
    tradeLandNum          41440 non-null int64
    tradeLandArea         41440 non-null float64
    landTotalPrice        41440 non-null int64
    landMeanPrice         41440 non-null float64
    totalWorkers          41440 non-null int64
    newWorkers            41440 non-null int64
    residentPopulation    41440 non-null int64
    pv                    41422 non-null float64
    uv                    41422 non-null float64
    lookNum               41440 non-null int64
    tradeTime             41440 non-null object
    tradeMoney            41440 non-null float64
    Type                  41440 non-null object
    dtypes: float64(10), int64(30), object(12)
    memory usage: 16.4+ MB
    None
                     ID          area  ...       lookNum    tradeMoney
    count  4.144000e+04  41440.000000  ...  41440.000000  4.144000e+04
    mean   1.001221e+08     70.959409  ...      0.396260  8.837074e+03
    std    9.376566e+04     88.119569  ...      1.653932  5.514287e+05
    min    1.000000e+08      1.000000  ...      0.000000  0.000000e+00
    25%    1.000470e+08     42.607500  ...      0.000000  2.800000e+03
    50%    1.000960e+08     65.000000  ...      0.000000  4.000000e+03
    75%    1.001902e+08     90.000000  ...      0.000000  5.500000e+03
    max    1.003218e+08  15055.000000  ...     37.000000  1.000000e+08
    
    [8 rows x 40 columns]
    
    ID    area rentType houseType  ... lookNum   tradeTime tradeMoney   Type
    0  100309852   68.06     未知方式    211...       0  2018/11/28     2000.0  Train
    1  100307942  125.55     未知方式    322...       1  2018/12/16     2000.0  Train
    2  100307764  132.00     未知方式    322...       1  2018/12/22    16000.0  Train
    3  100306518   57.00     未知方式    111...       9  2018/12/21     1600.0  Train
    4  100305262  129.00     未知方式    323...       0  2018/11/18     2900.0  Train
    
    [5 rows x 52 columns]
    

    该数据集一共包括41400个样本,共有51个特征,其中50个特征是自变量变量,因变量是tradeMoeny。该问题属于典型的回归问题。
    目标变量(因变量)是float型数据,自变量大多数数据都是int或float型;有部分字段是object型,即文本型中文或英文的,如rentType字段。

    类别特征和数值特征

    通过数据信息能够看出类别型特征一共有11个

    categorical_feas = ['rentType','houseType','houseFloor','region','plate',
                        'houseToward','houseDecoration','communityName','city',
                        'buildYear','tradeTime']
    

    连续型特征(包括因变量)一共有40个

    numerical_feas=['ID','area','totalFloor','saleSecHouseNum','subwayStationNum',
        'busStationNum','interSchoolNum','schoolNum','privateSchoolNum','hospitalNum',
        'drugStoreNum','gymNum','bankNum','shopNum','parkNum','mallNum','superMarketNum',
        'totalTradeMoney','totalTradeArea','tradeMeanPrice','tradeSecNum','totalNewTradeMoney',
        'totalNewTradeArea','tradeNewMeanPrice','tradeNewNum','remainNewNum','supplyNewNum',
        'supplyLandNum','supplyLandArea','tradeLandNum','tradeLandArea','landTotalPrice',
        'landMeanPrice','totalWorkers','newWorkers','residentPopulation','pv','uv',
        'tradeMoney','lookNum']
    

    缺失值分析

    # 缺失值分析
    def missing_values(df):
        alldata_na = pd.DataFrame(df.isnull().sum(),columns={'missingNum'})
        alldata_na['existNum'] = len(df) - alldata_na['missingNum']
        alldata_na['sum'] = len(df)
        alldata_na['missingRatio'] = alldata_na['missingNum']/len(df)
        alldata_na['dtype'] = df.dtypes
        # ascending:默认True升序排列,False降序排列
        alldata_na = alldata_na[alldata_na['missingNum']>0].reset_index().sort_values(by=['missingNum','index'],ascending=[False,True])
        alldata_na.set_index('index',inplace=True)
        return alldata_na
    
    alldata_na = missing_values(data_train)
    

    结果

           missingNum  existNum    sum  missingRatio    dtype
    index                                                    
    pv             18     41422  41440      0.000434  float64
    uv             18     41422  41440      0.000434  float64
    

    通过编写函数确定训练集中的那些特征存在缺失值,分别缺失了多少数据,缺失的比例有多大,以及这些缺失数据是否是随机缺失还是存在某种联系。
    简要分析,在该训练集中,只有两个特征存在缺失值分别是’pv’和’uv’,并且分别缺失了18个数据,分别占总数据的0.043%,通过查看原始数据得知缺失的数据来自同一个小区。该后续的分析中可以考虑先剔除这两个特征或者剔除这18个样本,先进行分析。

    单调特征列分析

    # 单调特征列分析
    def increasing(vals):
        cnt = 0
        len_ = len(vals)
        for i in range(len_-1):
            if vals[i+1] > vals[i]:
                cnt += 1
        return cnt
    
    fea_cols = [col for col in data_train.columns]
    for col in fea_cols:
        cnt = increasing(data_train[col].values)
        if cnt / data_train.shape[0] >= 0.55:
            print('单调特征:', col)
            print('单调特征值个数:', cnt)
            print('单调特征值比例:', cnt/data_train.shape[0])
    

    结果

    单调特征: tradeTime
    单调特征值个数: 24085
    单调特征值比例: 0.5812017374517374
    

    通过编写函数确定存在单调递增的特征,即是否存在一列数据单调递增。

    单调特征为什么采用这种判断方法,如果入局之间被随机打乱,那这种方式不就失败了吗?
    结果显示,存在一个单调递增的特征:tradeTime,为时间列。
    时间列在特征工程的时候,不同的情况下能有很多的变种形式,比如按年月日分箱,或者按不同的维度在时间上聚合分组,等等

    特征unique分析

    # 特征unique分布
    print('特征unique分布')        
    for feature in categorical_feas:
        print(feature + "的特征分布如下:")
        print(data_train[feature].value_counts())
        
    

    结果

    rentType的特征分布如下:
    未知方式    30759
    整租       5472
    合租       5204
    --          5
    Name: rentType, dtype: int64
    houseType的特征分布如下:
    1119805
    2118512
    2216783
    3113992
    3222737
    4111957
    
    
    9251
    3251
    5451
    7131
    Name: houseType, Length: 104, dtype: int64
    houseFloor的特征分布如下:
    中    154581406611916
    Name: houseFloor, dtype: int64
    region的特征分布如下:
    RG00002    11437
    RG00005     5739
    RG00003     4186
    RG00010     3640
    RG00012     3368
    RG00004     3333
    RG00006     1961
    RG00007     1610
    RG00008     1250
    RG00013     1215
    RG00001     1157
    RG00014     1069
    RG00011      793
    RG00009      681
    RG00015        1
    Name: region, dtype: int64
    plate的特征分布如下:
    BK00031    1958
    BK00033    1837
    BK00045    1816
    BK00055    1566
    BK00056    1516
    
    BK00044      98
    BK00016      40
    BK00036      33
    BK00058      15
    BK00032       3
    BK00001       1
    Name: plate, Length: 66, dtype: int64
    houseToward的特征分布如下:
    南       34377
    南北       22542043
    暂无数据      963
    东南        655552
    西         264
    西南        250
    西北         58
    东西         24
    Name: houseToward, dtype: int64
    houseDecoration的特征分布如下:
    其他    29040
    精装    10918
    简装     1171
    毛坯      311
    Name: houseDecoration, dtype: int64
    communityName的特征分布如下:
    XQ01834    358
    XQ01274    192
    XQ02273    188
    XQ03110    185
    XQ02337    173
    XQ01389    166
    
    XQ03838      1
    XQ04064      1
    XQ00112      1
    XQ01385      1
    XQ03573      1
    XQ01911      1
    Name: communityName, Length: 4236, dtype: int64
    city的特征分布如下:
    SH    41440
    Name: city, dtype: int64
    buildYear的特征分布如下:
    1994    2851
    暂无信息    2808
    2006    2007
    2007    1851
    2008    1849
    2005    1814
    2010    1774
    
    1961       2
    1926       2
    1951       1
    1962       1
    1950       1
    Name: buildYear, Length: 80, dtype: int64
    tradeTime的特征分布如下:
    2018/3/3      543
    2018/3/4      487
    2018/3/11     410
    2018/3/10     400
    2018/3/24     341
    2018/3/18     339
    
    2018/1/4       14
    2018/1/18      14
    2018/1/2        5
    2018/2/13       4
    2018/2/20       2
    2018/2/19       1
    2018/2/17       1
    Name: tradeTime, Length: 361, dtype: int64
    

    用自带函数value_counts() 来得到每个类别型变量的 种类 分布;并且简单画出柱状图直观地显示各变量的种类分布。

    通过统计数字和柱状图,可以发现:
    rentType:4种,且绝大多数是无用的未知方式;
    houseType:104种,绝大多数在3室及以下;
    houseFloor:3种,分布较为均匀;
    region: 15种;
    plate: 66种;
    houseToward: 10种;
    houseDecoration: 4种,一大半是其他;
    buildYear: 80种;
    communityName: 4236种,且分布较为稀疏;

    此步骤是为之后数据处理和特征工程做准备,先理解每个字段的含义以及分布,之后需要根据实际含义对分类变量做不同的处理。

    统计特征值频次大于100的特征

    # 统计特征值频次大于100的特征
    print('统计特征值频次大于100的特征')
    for feature in categorical_feas:
        df_value_counts = pd.DataFrame(data_train[feature].value_counts())
        df_value_counts = df_value_counts.reset_index()
        df_value_counts.columns = [feature,'counts']  # 改变列名
        print(df_value_counts[df_value_counts['counts']>=100])
    

    结果

      rentType  counts
    0     未知方式   30759
    1       整租    5472
    2       合租    5204
       houseType  counts
    0     1119805
    1     2118512
    2     2216783
    3     3113992
    4     3222737
    5     4111957
    6     3211920
    7     1011286
    8     121933
    9     222881
    10    422435
    11    201419
    12    423273
    13    511197
    14    212155
    15    323149
    16    312135
      houseFloor  counts
    015458
    114066
    211916
         region  counts
    0   RG00002   11437
    1   RG00005    5739
    2   RG00003    4186
    3   RG00010    3640
    4   RG00012    3368
    5   RG00004    3333
    6   RG00006    1961
    7   RG00007    1610
    8   RG00008    1250
    9   RG00013    1215
    10  RG00001    1157
    11  RG00014    1069
    12  RG00011     793
    13  RG00009     681
          plate  counts
    0   BK00031    1958
    1   BK00033    1837
    2   BK00045    1816
    3   BK00055    1566
    4   BK00056    1516
    5   BK00052    1375
    6   BK00017    1305
    7   BK00041    1266
    8   BK00054    1256
    9   BK00051    1253
    10  BK00046    1227
    11  BK00035    1156
    12  BK00042    1137
    13  BK00009    1016
    14  BK00050     979
    15  BK00043     930
    16  BK00026     906
    17  BK00047     880
    18  BK00034     849
    19  BK00013     834
    20  BK00053     819
    21  BK00028     745
    22  BK00040     679
    23  BK00060     671
    24  BK00010     651
    25  BK00029     646
    26  BK00062     618
    27  BK00022     614
    28  BK00018     613
    29  BK00064     590
    30  BK00005     549
    31  BK00003     523
    32  BK00014     500
    33  BK00019     498
    34  BK00061     477
    35  BK00011     455
    36  BK00037     444
    37  BK00012     412
    38  BK00038     398
    39  BK00024     397
    40  BK00020     384
    41  BK00002     357
    42  BK00065     348
    43  BK00027     344
    44  BK00039     343
    45  BK00063     281
    46  BK00057     278
    47  BK00015     253
    48  BK00006     231
    49  BK00021     226
    50  BK00007     225
    51  BK00066     219
    52  BK00030     219
    53  BK00049     211
    54  BK00008     210
    55  BK00004     189
    56  BK00048     165
    57  BK00025     157
    58  BK00023     127
    59  BK00059     122
      houseToward  counts
    034377
    1          南北    2254
    22043
    3        暂无数据     963
    4          东南     655
    5552
    6           西     264
    7          西南     250
      houseDecoration  counts
    0              其他   29040
    1              精装   10918
    2              简装    1171
    3              毛坯     311
       communityName  counts
    0        XQ01834     358
    1        XQ01274     192
    2        XQ02273     188
    3        XQ03110     185
    4        XQ02337     173
    5        XQ01389     166
    6        XQ01658     163
    7        XQ02789     152
    8        XQ01561     151
    9        XQ00530     151
    10       XQ01339     132
    11       XQ00826     122
    12       XQ01873     122
    13       XQ02296     121
    14       XQ01232     119
    15       XQ01401     118
    16       XQ02441     117
    17       XQ00196     115
    18       XQ01207     109
    19       XQ02365     109
    20       XQ01410     108
    21       XQ00852     105
    22       XQ01672     103
    23       XQ02072     103
      city  counts
    0   SH   41440
       buildYear  counts
    0       1994    2851
    1       暂无信息    2808
    2       2006    2007
    3       2007    1851
    4       2008    1849
    5       2005    1814
    6       2010    1774
    7       1995    1685
    8       1993    1543
    9       2011    1498
    10      2004    1431
    11      2009    1271
    12      2014    1238
    13      2003    1156
    14      1997    1125
    15      2002    1120
    16      2012    1049
    17      1996     991
    18      2000     925
    19      2001     898
    20      2015     840
    21      1999     822
    22      1998     733
    23      2013     714
    24      1987     632
    25      1983     612
    26      1991     545
    27      1984     493
    28      1980     452
    29      1990     431
    30      1988     423
    31      1989     419
    32      1985     359
    33      1982     344
    34      1986     320
    35      1992     308
    36      1976     251
    37      1957     227
    38      1981     221
    39      1956     153
    40      1977     153
    41      2016     140
    42      1978     133
    43      1958     122
    44      1979     116
    45      1954     101
          tradeTime  counts
    0      2018/3/3     543
    1      2018/3/4     487
    2     2018/3/11     410
    3     2018/3/10     400
    4     2018/3/24     341
    5     2018/3/18     339
    6      2018/3/1     332
    7     2018/3/17     328
    8      2018/3/5     296
    9     2018/2/25     292
    10     2018/3/8     291
    11    2018/3/25     283
    12     2018/3/2     276
    13     2018/3/9     272
    14    2018/3/12     260
    15    2018/3/31     258
    16     2018/3/7     252
    17    2018/6/10     250
    18    2018/8/19     234
    19     2018/3/6     229
    20    2018/7/29     225
    21    2018/2/28     223
    22     2018/7/1     221
    23    2018/8/26     220
    24    2018/3/15     218
    25    2018/5/20     218
    26    2018/5/27     217
    27    2018/7/14     210
    28    2018/4/22     210
    29    2018/6/23     209
    ..          ...     ...
    154    2018/6/1     106
    155  2018/11/24     106
    156   2018/8/16     106
    157   2018/6/29     106
    158   2018/12/1     105
    159   2018/8/29     105
    160    2018/8/2     105
    161    2018/6/7     105
    162   2018/4/24     104
    163   2018/6/13     104
    164   2018/5/18     104
    165  2018/11/11     104
    166   2018/6/15     104
    167   2018/4/12     103
    168   2018/4/23     103
    169   2018/9/24     103
    170    2018/5/4     102
    171    2018/5/2     102
    172    2018/5/7     102
    173   2018/4/11     102
    174   2018/4/20     102
    175   2018/7/10     102
    176   2018/9/13     101
    177   2018/4/28     101
    178   2018/8/27     101
    179    2018/7/4     100
    180   2018/5/25     100
    181  2018/11/25     100
    182    2018/9/6     100
    183    2018/9/3     100
    
    [184 rows x 2 columns]
    

    此步骤和特征nunique分布结合步骤结合起来看,有一些小于100的是可以直接统一归类为其他的

    label分布

    # label分布
    print('label分布')
    fig,axes = plt.subplots(2,3,figsize=(20,5))
    fig.set_size_inches(20,12)
    sns.distplot(data_train['tradeMoney'],ax=axes[0][0])
    sns.distplot(data_train[(data_train['tradeMoney']<20000)]['tradeMoney'],ax=axes[0][1])
    
    sns.distplot(data_train[(data_train['tradeMoney']>=20000) & 
                           (data_train['tradeMoney']<50000)]['tradeMoney'],ax=axes[0][2])
        
    sns.distplot(data_train[(data_train['tradeMoney']>=50000) & 
                            (data_train['tradeMoney']<100000)]['tradeMoney'],ax=axes[1][0])
        
    sns.distplot(data_train[(data_train['tradeMoney']>=100000)]['tradeMoney'],ax=axes[1][1])
    
    print("money<=10000",len(data_train[(data_train['tradeMoney']<=10000)]['tradeMoney']))
    print("10000<money<=20000",len(data_train[(data_train['tradeMoney']>10000)&(data_train['tradeMoney']<=20000)]['tradeMoney']))
    print("20000<money<=50000",len(data_train[(data_train['tradeMoney']>20000)&(data_train['tradeMoney']<=50000)]['tradeMoney']))
    print("50000<money<=100000",len(data_train[(data_train['tradeMoney']>50000)&(data_train['tradeMoney']<=100000)]['tradeMoney']))
    print("100000<money",len(data_train[(data_train['tradeMoney']>100000)]['tradeMoney']))
    

    结果
    在这里插入图片描述

    money<=10000 38964
    10000<money<=20000 1985
    20000<money<=50000 433
    50000<money<=100000 39
    100000<money 19
    

    将目标变量tradeMoney分组,并查看每组间的分布;
    可以看出绝大多数都是集中在10000元以内的,并且从图中可以看到该分布是右偏的。

    编码问题

    对11种类别型变量分别考虑进行编码,
    rentType:对出租方式来讲,除了“未知方式”、“整租”、“合租”,还有一种"–",只有5个,样本量较少,而且在测试集数据中也没有该种类型的出租方式,因此可以将其作为异常值处理。
    ‘houseType’:房屋类型,用于说明几室几厅几卫,具有大小关系,因此采用分别给室厅卫赋予权重,进行加权。

    ‘houseFloor’: 房屋楼层只有高中低三种,而且具有大小关系,可以设为3,2,1。

    ‘houseToward’:房屋朝向有10种类型,其中有一种是“未知类型”,类型之间没有大小关系,因此可以采用onehat编码。

    ‘houseDecoration’:房屋装修有四种类型:“其它”、“精装”、“简装”、“毛坯”,之间有等级关系,但存在其它,可以默认为“其它”应该介于“毛坯”和“简装”之间,因此四者关系设为2,4,3,1。
    ‘communityName’, 小区名称,一共4236个,认为小区名称与ID类似,因此这个特征不参与训练。

    ‘city’:与ID类似。

    ‘region’:与ID 类似。

    ‘plate’:与ID类似。

    ‘buildYear’:建筑年份,转换为数值型,需要归一化处理。

    ’tradeTime’:交易时间,建议转换为年月日。

    展开全文
  • 总结一下这次参加华为大数据比赛的体会和收获 此次比赛最后止步200+ 没能进复赛 第一次参加大数据竞赛 虽然没能进复赛 但总得来说 还是很值得的 初赛一个月的备赛时间 我和我的组员大约只用了半个月在比赛上 首先 ...
  • 数据分析大赛总结

    2019-07-04 10:03:04
    参加公司数据分析竞赛参赛总结,虽结果不理想,但反省自身,为再战积累经验。
  • Jdata大数据竞赛总结

    千次阅读 2017-07-10 09:45:07
    本次大赛以京东商城真实的用户、商品和行为数据(脱敏后)为基础,参赛队伍需要通过数据挖掘的技术和机器学习的算法,构建用户购买商品的预测模型,输出高潜用户和目标商品的匹配结果,为精准营销提供高质量的目标...
  • 大数据风控AI竞赛总结

    千次阅读 2019-01-02 14:58:36
    本次赛事中主办方前海征信开放业务数据,设计国内首个迁移学习赛题:参赛选手需依据给定的4万条业务A数据及4千条业务B数据,建立业务B的信用评分模型。其中业务A为信用贷款, 其特征就是债务人无需提供抵押品,仅凭...
  • 题目描述 建模方法 特征工程 我的几次提升方法 从其他队伍那里学习到的提升方法 ...我是一个之前PhD做分布式计算、虚拟机调度,毕业之后年初才转ML的家伙,自恃有点学习开发能力和混迹ICPC竞赛的...
  • 因为微信外链限制,读者可以在公众号AI圈终身学习(ID:AIHomie)首页回复“2018语义相似度”,或者...殷剑宏,江湖人称Yin叔,业余做各种数据竞赛,喜欢NLP和交通类的竞赛。以下是部分竞赛参赛经历: 2016年 DataCas...
  • 比赛的背景和介绍:百度点石、西安交大大数据竞赛,比赛具体的任务是给定遥感图片和每个地点的行人访问数据要求参赛者根据这两个数据集预测地点的标签,例如医院、学校等如下图所示: 数据集中图片数据为4万张100*...
  • Kaggle 是一个领先的数据科学比赛平台,由...这篇文章总结了我和其他参赛者的经验,提出了顺利完成一个 Kaggle 比赛的 10 个步骤。 由于这篇文章是为 Kaggle 比赛而提出的,所以对于一个有明确分析数据和预测建模
  • 前段时间,在国外知名社区Reddit上出现了一个“知乎式”问题:作为数据竞赛的头牌,为什么Kaggle的奖金这么低? 我们看到几个高赞回答,总结下来就是:Kaggle竞赛的性质和选手的参赛主要目的都不是奖金,而是优胜...
  • 第7章 电子设计竞赛设计与总结报告写作 7.1 设计与总结报告写作基本要求 7.1设计与总结报告写作基本要求.doc(63.5 KB, 下载次数: 3500) 7.1.1 设计总结报告的评分标准分析 7.1.2 设计总结报告的内容、要求与应注意...
  • 世界顶级程序设计高手的经验总结 【ACM-ICPC全球总冠军】巫泽俊主译 日本ACM-ICPC参赛者人手一册 本书对程序设计竞赛中的基础算法和经典问题进行了汇总,分为准备篇、初级篇、中级篇与高级篇4章。作者结合自己...
  • 项目经验总结(—)

    千次阅读 2016-05-25 15:48:58
    参赛队伍需要通过大数据和算法构建面向建移动电子商务的商品推荐模型,挖掘数据背后丰富的内涵,为移动用户在合适的时间、合适的地点精准推荐合适的内容。 二、第一赛季 (1)比赛数据 官方提供了两个文本文件,...
  • 第一次参加Kaggle竞赛,刚参赛时入门估计才两个月,所以拿到问题基本是懵逼的,再加上机器配置只有1060(后期换成了Kaggle的Tesla K80但依旧不怎么快),所以迭代速度巨慢无比,最后勉强拿了铜牌(top10%)。...
  • 2016CCPC网络赛个人总结

    千次阅读 2016-08-14 18:39:27
    今天下午是2016年的CCPC中国大学生程序设计竞赛的网络赛。几百个学校共计一千多个队参赛。在HDOJ举行。12点开始以后,我们马上看了第一题,嘻嘻哈哈两个星球有着不同的公转周期。给出一个时间。当过了这么多天以后,...
  • 最近一段时间,工作上花了不少时间用MATLAB处理工厂下线的数据数据庞大不说,复杂度也高,各种推算和统计所以今天我打算总结一下,平时我在用MATLAB做数据分析时常用的几个小技巧正好全国大学生数学建模竞赛下周...
  • 最近一段时间,工作上花了不少时间用MATLAB处理工厂下线的数据数据庞大不说,复杂度也高,各种推算和统计 所以今天我打算总结一下,平时我在用MATLAB做数据分析时常用的几个小技巧 正好全国大学生数学建模竞赛下周...
  • 前段时间,在国外知名社区Reddit上出现了一个“知乎式”问题:作为数据竞赛的头牌,为什么Kaggle的奖金这么低?我们看到几个高赞回答,总结下来就是:Kaggle竞赛的性质和选手的参赛主...
  • 文本分类实战--从TFIDF到深度学习(附代码)

    万次阅读 多人点赞 2017-05-21 21:55:45
    选择参赛的主要原因是其不像阿里们举办的竞赛那样,分分钟就干一件事就是特征工程和调参,然后数据又多又乱,不适合入门。其次一个原因就是目前我的研究方向就是NLP,之前也做过一个文本分类的东西,所以就参赛了。...
  • SemEval是国际语义评测大会,是全球范围内影响力最强、规模最大、参赛人数最多的语义评测竞赛。 SemEval2021比赛官网入口 Task描述 SemEval2014-task4 ABSA任务关注的领域是NLP中的细粒度情感分析,即给定一个句子...
  • 从后台服务器上收集到该学科竞赛专栏原始日志数据(moodle.iflysse.access.log),那么,你作为参赛选手,需要你使用HDFS API做到以下几点? (1) 使用Java API创建HDFS文件夹(hdfs://Master:8020/hdfs/iflysse_log
  • 无监督学习:比如参加一些开放性的竞赛(比如:数学建模竞赛),出题人只给出题目。参赛者,需要根据题目找出结构和规则,才能解题。(在没有老师的情况下,学生自学的过程。学生在学习的过程中,自己对知识进行归纳...
  • 全国大学生电子设计大赛培训教程(全)

    千次下载 热门讨论 2013-04-21 16:19:03
    第7章 电子设计竞赛设计与总结报告写作 7.1 设计与总结报告写作基本要求 7.1.1 设计总结报告的评分标准分析 7.1.2 设计总结报告的内容、要求与应注意的一些问题 7.2 设计与总结报告示例 7.2.1 电压控制LC振荡器(A题...
  • 总结一下,在对竞赛项目开发的过程中,我发现本款小红板的背面标有引脚定义的字样顺序有误,应该是外侧引脚对应外部文字说明,内部引脚对应内部文字说明,从大赛官方下载得到的引脚说明的相应图解也有同样的问题。...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

数据竞赛参赛总结