PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林 您所在的位置:网站首页 meic模型 PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林

PYTHON用户流失数据挖掘:建立逻辑回归、XGBOOST、随机森林

2023-03-28 20:25| 来源: 网络整理| 查看: 265

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 118

avgprice 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 实验室设备网 版权所有