PipeLine:
新增加的特征:
day:日期
hour:小时时间
user_tag_len: user_tag 进行split之后统计字段的数目
creative_area:长和宽的乘积
creative_area_type :将width和height 组合成 width_height 的形式
advert_industry_inner_1:将adver_industry_inner split出一级行业(之所以不用将二级行业也单独出来作为一个特征是因为如果二级行业相同 那么一级行业肯定也相同 单独出来的二级行业和avert_industry_inner 是完全相关的)
online_days:广告是具有时效性的 会随着时间变化而出现衰减
删除的特征:
time
instance_id
user_tags
advert_name:和advert_id 之间是一一对应的 但是在这里相关性并不为1 由此可见 可能是存在一些噪声数据
creative_is_download和creative_is_jump: 广告下载和跳转只有一种是可能 是下载页就不可能是跳转 是跳转就不可能是下载页
os和os_name :同样也是多余的
特征表:
instance_id : 样本id
click:是否点击
广告信息:
adid:广告的id信息
advert_id:广告商的信息
1.缺失值处理
2.bool类型值转换
pandas
1.read_table和read_csv
主要使用pandas中read_table 和read_csv 对数据进行读取 二者唯一的区别就是默认的分割符不同 read_table 默认使用tab 作为分割符 read_csv 默认使用 逗号作为分割
(当数据量过大时可以通过控制 nrows 属性选择载入的数据量 ) 同时在全部载入后也可以利用dataframe.sample() 来随机抽样部分数据
2.pivot_table
透视表 可以对数据进行动态排布 随意定制分析需求
其中 index,value,aggfunc是三个重要的参数
每一个透视表都需要有一个index 可以是一级索引 也可以是多级索引
values代表我们需要进行分析的数据项
aggfunc代表对数据进行聚合时需要进行的操作 默认是mean
3.pd.merge
和数据库中的join类似 在做特征工程的时候 增加某些特征需要连接到原始表中去会使用到该方法
4. pandas groupby 和agg
pd.groupby([特征名称])[特征名称].agg([len,‘sum’])
这一语法糖表示对 某些特征进行分组聚类 并对聚类后其他特征进行统计 例如 len统计每一类中某一特征出现的次数 sum统计某一类特征的总和
这里要注意的一个语法规则是
对于一个dataframe 名为tmpData 例如:
如果只是tmpData[‘len’]得到的是Series类型数据 如果是tmpData[[‘len’]]得到的是只包含 len 列的dataFrame数据
同时在处理聚合数据的时候 reset_index也是一个常用的函数
对于某些聚合特征通过groupby之后 被groupby的属性就变成了index 当我们需要将聚合属性和原始属性连接的时候 我们需要通过merge 并把聚合属性当成连接的键