PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林 | 您所在的位置:网站首页 › meic模型 › PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林 |
3 切分数据
# 划分训练集,测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=666) 3.1 理解数据可以看到变量比较的多,先进行分类,除去目标变量label,此数据集的字段可以分成三个类别:订单相关指标、客户行为相关指标、酒店相关指标。 4 特征工程 # 用训练集进行数据探索 train = pd.concat([X_train,y_train],axis=1) 4.1 数据预处理 4.1.1 删除不必要的列X_train.pop("sampleid") X_test.pop("sampleid") train.pop("sampleid") 4.1.2 数据类型转换字符串类型的特征需要处理成数值型才能建模,将arrival和d相减得到"提前预定的天数",作为新的特征 # 增加列 # 将两个日期变量由字符串转换为日期格式类型 train["arrial"] = pd.to_datimetain["arrval"]) X_tst["arival"] = d.to_daetime(X_est["arival"]) # 生成提前预定时间列(衍生变量) X_trin["day_adanced"] = (X_rain["arival"]-Xtrain["d"]).dt.days ## 删除列 X_tran.dro(columns="d","arrivl"],inpace=True) 4.1.3 缺失值的变量生成一个指示哑变量 zsl = tain.isnll().sum()[tain.isnll(.sum()!=0].inex 4.1.4 根据业务经验填补空缺值ordernum_oneyear 用户年订单数为0 ,lasthtlordergap 11%用600000填充 88%用600000填充 一年内距离上次下单时长,ordercanncelednum 用0填充 用户一年内取消订单数,ordercanceledprecent 用0t填充 用户一年内取消订 单率 242114 242114 -为空 有2种情况 1:新用户未下订单的空-88.42% 214097 2.老用户1年以上未消费的空 增加编码列未下订单新用户和 1年未下订单的老用户 price_sensitive -0 ,中位数填充 价格敏感指数,consuming_capacity -0 中位数填充 消费能力指数 226108 -为空情况 1.从未下过单的新用户214097 2.12011个人为空原因暂不明确 uv_pre -24小时历史浏览次数最多酒店历史uv. cr_pre -0,中位数填充 -24小时历史浏览次数最多酒店历史cr -0,中位数填充 29397 -为空 1.用户当天未登录APP 28633 2.刚上线的新酒店178 586 无uv,cr记录 编码添加 该APP刚上线的新酒店 764 29397 customereval_pre2 用0填充-24小时历史浏览酒店客户评分均值, landhalfhours -24小时内登陆时长 -用0填充28633 -为空:用户当天未登录APP 28633 hotelcr ,hoteluv -中位数填充 797 刚上新酒店 60 #未登录APP 118avgprice 0 填充一部分价格填充为0 近一年未下过订单的人数,cr 用0填充, tkq = ["hstoryvsit_7ordernm","historyviit_visit_detaipagenum","frstorder_b","historyvi # tbkq = ["hitoryvsit_7dernum","hisryvisit_isit_detailagenum"] X_train[i].fillna(0,inplace=True) ## 一部分用0填充,一部分用中位數填充 # 新用戶影響的相關屬性:ic_sniti,cosuing_cacity n_l = picesensitive","onsmng_cpacty"] fori in n_l X_trini][Xra[X_trinnew_ser==1].idex]=0 X_est[i][X_test[X_test.nw_user==1].inex]=0 4.1.5 异常值处理将customer_value_profit、ctrip_profits中的负值按0处理 将delta_price1、delta_price2、lowestprice中的负值按中位数处理 for f in flter_two: a = X_trin[].median() X_tran[f][X_train[f] |
CopyRight 2018-2019 实验室设备网 版权所有 |