原文kernel(https://www.kaggle.com/sudalairajkumar/simple-exploration-baseline-ga-customer-revenue#)
一 、特征分析
1.读取数据 pd.read_csv
含有子集的特征json.loads,json_normalize函数每一子集处理成一列
遇到的一个坑是,一些特征始终无法规则话,最终解决办法是将pandas升级到最新版本
2.可视化要预测的值及分析占比
这里是每个用户的交易额总量totals.transactionRevenue,所有需要按每个用户分组groupby(‘fullVisitorId’)
散点图可视化plt.scatter,正好符合二八定律
计算所有个例和所有用户中,有交易的占比,pd.notnull().sum()
用户的数量,df.fullVisitorId.nunique()
3.所有个例中值相同的特征,当然可以删除该特征
不滤初空值还所有都相同的,df[].nunique(dropna=False)==1
4、device特征
3中得出device中有12个特征不考虑还剩3个
这里主要观察了在不同浏览器,设备,操作系统下的总用户数量,花钱的人数,和平均花费
先分组,再统计,df.groupby(‘xxx’)[‘交易额’].agg([‘size’,‘count’,‘mean’])
结论,比如台式机比笔记本用户更容易消费,ios用户比Android更容易消费。
5、data特征
可视化时间内,总个例数量的变化趋势和有花费数量的变化趋势
在2016年12月,虽然总访问量增加,但是花费人数没有增加,可以说延缓了一段时间。
6、地理 Information
同device特征
7、流量来源信息
同上
8、访客档案
网页浏览量和点击量
二、Baseline Model
确认train存在但是test集中不存在的变量,set(train_df.columns).difference(set(test_df.colums)))
删除非目标变量的仅train存在的变量及前面的常值变量,train_df.drop(‘xxx’,axis=1)
编码分类变量,lbl = preprocessing.LabelEncoder()
将float变量转换为float型,train_df[col].astype(float)
划分训练和验证样本集,最近两个月作为验证集
利用lightgbm训练