【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(下)

简介: 【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(下)

【视频】支持向量机算法原理和Python用户流失数据挖掘SVM实例(上):https://developer.aliyun.com/article/1496748


刚上新酒店 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]<0]=a
X_test[f][X_est[]<0]=a
tran[f][train[f]<0]=a

4.1.6 缺失值填充

趋于正态分布的字段,使用均值填充:businessrate_pre2、cancelrate_pre、businessrate_pre;偏态分布的字段,使用中位数填充.

def na_ill(df):
for col in df.clumns:
mean = X_trai[col].mean()
dfcol]=df[col].fillna(median)
return
## 衍生变量年成交率
X_train["onear_dalate"]=_tain["odernum_onyear"]/X_tran"visinum_onyar"]
X_st["onyardealae"]=X_st["orernum_neyear"]/Xtest[visitumonyear"]
X_al =pd.nca([Xtin,Xtes)
#决策树检验
dt = Decsionr(random_state=666)
pre= dt.prdict(X_test)
pre_rob = dt.preicproa(X_test)[:,1]
pre_ob

4.2 数据标准化

scaler = MinMacaer()
#决策树检验
dt = DeonTreasifi(random_state=666)


5 特征筛选


5.1 特征选择-删除30%列

X_test = X_test.iloc[:,sp.get_spport()]
#决策树检验
dt = DecisonreeClssifie(random_state=666)
dt.fit(X_trin,y_tain)
dt.score(X_tst,y_est)
pre = dt.pdict(X_test)
pe_rob = dt.redicproba(X_test)[:,1]
pr_rob
uc(pr,tpr)

image.png

5.2 共线性/数据相关性

#共线性--严重共线性0.9以上,合并或删除
d = Xtrai.crr()
d[d<0.9]=0 #赋值显示高相关的变量
pl.fufsiz=15,15,dpi200)
ssheatp(d)

image.png

6 建模与模型评估


6.1 逻辑回归

y_prob = lr.preictproba(X_test)[:,1]
y_pred = lr.predict(X_test
fpr_lr,pr_lr,teshold_lr = metris.roc_curve(y_test,y_prob)
ac_lr = metrcs.aucfpr_lr,tpr_lr)
score_lr = metrics.accuracy_score(y_est,y_pred)
prnt("模准确率为:{0},AUC得分为{1}".fomat(score_lr,auc_lr))
prit("="*30

6.2 朴素贝叶斯

gnb = GasinNB() # 实例化一个LR模型
gnb.fi(trai,ytran) # 训练模型
y_prob = gn.pic_proba(X_test)[:,1] # 预测1类的概率
y_pred = gnb.preict(X_est) # 模型对测试集的预测结果
fpr_gnb,tprgnbtreshold_gb = metrics.roc_crve(ytesty_pob) # 获取真阳率、伪阳率、阈值
aucgnb = meic.aucf_gnb,tr_gnb) # AUC得分
scoe_gnb = merics.acuray_score(y_tes,y_pred) # 模型准确率

image.png

6.3 支持向量机

s =SVkernel='f',C=,max_ter=10,randomstate=66).fit(Xtrain,ytrain)
y_rob = sc.decsion_untio(X_st) # 决策边界距离
y_ed =vc.redit(X_test) # 模型对测试集的预测结果
fpr_sv,tpr_vc,theshld_sv = mtris.rc_urv(y_esty_pob) # 获取真阳率、伪阳率、阈值
au_vc = etics.ac(fpr_sc,tpr_sv) # 模型准确率
scre_sv = metrics.ccuracy_sore(_tst,ypre)

6.4 决策树

dtc.fit(X_tran,_raiproba(X_test)[:,1] # 预测1类的概率
y_pred = dtc.predct(X_test # 模型对测试集的预测结果
fpr_dtc,pr_dtc,thresod_dtc= metrcs.roc_curvey_test,yprob) # 获取真阳率、伪阳率、阈值

image.png

6.5 随机森林

c = RndoForetlassiir(rand_stat=666) # 建立随机森
rfc.it(X_tain,ytrain) # 训练随机森林模型
y_rob = rfc.redict_poa(X_test)[:,1] # 预测1类的概率
y_pedf.pedic(_test) # 模型对测试集的预测结果
fpr_rfc,tp_rfc,hreshol_rfc = metrcs.roc_curve(y_test,_prob) # 获取真阳率、伪阳率、阈值
au_fc = meris.auc(pr_rfctpr_fc) # AUC得分
scre_rf = metrcs.accurac_scor(y_tes,y_ped) # 模型准确率

6.6 XGboost

# 读训练数据集和测试集
dtainxgbatrx(X_rai,yrain)
dtest=g.DMrx(Xtest
# 设置xgboost建模参数
paras{'booser':'gbtee','objective': 'binay:ogistic','evlmetric': 'auc'
# 训练模型
watchlst = (dtain,'trai)
bs=xgb.ran(arams,dtain,n_boost_round=500eva=watchlst)
# 输入预测为正类的概率值
y_prob=bst.redict(dtet)
# 设置阈值为0.5,得到测试集的预测结果
y_pred = (y_prob >= 0.5)*1
# 获取真阳率、伪阳率、阈值
fpr_xg,tpr_xgb,heshold_xgb = metricsroc_curv(test,y_prob)
aucxgb= metics.uc(fpr_gb,tpr_xgb # AUC得分
score_gb = metricsaccurac_sore(y_test,y_pred) # 模型准确率
print('模型准确率为:{0},AUC得分为:{1}'.format(score_xgb,auc_xgb))

image.png

6.7 模型比较

plt.xlabel('伪阳率')
plt.ylabel('真阳率')
plt.title('ROC曲线')
plt.savefig('模型比较图.jpg',dpi=400, bbox_inches='tight')
plt.show()

image.png

6.8 重要特征

ea = pd.Sries(dct(list((X_trclumsfc.eatre_imortancs_))))
ea.srt_vlues(acedig=False
fea_s = (fa.srt_vauesacnding=alse)).idex


6.9 流失原因分析

  • cityuvs和cityorders值较小时用户流失显著高于平均水平,说明携程平台小城市的酒店信息缺乏,用户转向使用小城市酒店信息较全的竞品导致用户流失
  • 访问时间点在7点-19点用户流失比例高与平均水平:工作日推送应该避开这些时间点
  • 酒店商务属性指数在0.3-0.9区间内用户流失大于平均水平,且呈现递增趋势,说明平台商务指数高的酒店和用户期望有差距(价格太高或其他原因?), 商务属性低的用户流失较少
  • 一年内距离上次下单时长越短流失越严重,受携程2015年5月-2016年1月爆出的负面新闻影响较大,企业应该更加加强自身管理,树立良好社会形象
  • 消费能力指数偏低(10-40)的用户流失较严重,这部分用户占比50%应该引起重视
  • 价格敏感指数(5-25)的人群流失高于平均水平,注重酒店品质
  • 用户转化率,用户年订单数,近1年用户历史订单数越高,24小时内否访问订单填写页的人群比例越大流失越严重,需要做好用户下单后的追踪体验, 邀请填写入住体验,整理意见作出改进
  • 提前预定天数越短流失越严重用户一年内取消订单数越高流失越严重


6.10 建议:

image.png

  • 考虑占取三四线城市和低端酒店范围的市场份额
  • 用户易受企业负面新闻影响,建议企业勇于承担社会责任,加强自身管理,提高公关新闻处理时效性,树立品牌良好形像
  • 在节假日前2-3周开始热门景点酒店推送
  • 做好酒店下单后的追踪体验,邀请填写入住体验,并整理用户意见作出改进


7 客户画像


7.1 建模用户分类

# 用户画像特征
user_feature = ["decisiohabit_user,'starprefer','lastpvgap','sid',
'lernum",'historyvisit_visit_detaipagenum',
"onyear_dealrat
]
# 流失影响特征
fea_lis = ["cityuvs",
"cityorders",
"h",
"businessrate_pre2"
# 数据标准化 Kmeans方法对正态分布数据处理效果更好
scaler = StanardScalr()
lo_atribues = pdDatarame(scr.fittransfrm(all_cte),columns=all_ce.coluns)
# 建模分类
Kmens=Means(n_cluste=2,rndom_state=0) #333
Keans.fi(lot_attributes # 训练模型
k_char=Kmenscluster_centers_ # 得到每个分类
plt.figure(figsize=(5,10))

image.png

image.png

7.2 用户类型占比

types=['高价值用户','潜力用户']
ax.pie[1], raius=0.,colors='w')
plt.savefig(用户画像.jpg'dpi=400, box_inchs='tigh')

7.3 高价值用户分析

占比19.02,访问频率和预定频率都较高,消费水平高,客户价值大,追求高品质,对酒店星级要求高,客户群体多集中在老客户中,

建议:

多推荐口碑好、性价比高的商务酒店连锁酒店房源吸引用户;

在非工作日的11点、17点等日间流量小高峰时段进行消息推送。

为客户提供更多差旅地酒店信息;

增加客户流失成本:会员积分制,推出会员打折卡

7.4 潜力用户分析

占比:80.98% 访问频率和预定频率都较低,消费水平较低,对酒店星级要求不高,客户群体多集中在新客户中,客户价值待挖掘 建议:

因为新用户居多,属于潜在客户,建议把握用户初期体验(如初期消费有优惠、打卡活动等),还可以定期推送实惠的酒店给此类用户,以培养用户消费惯性为主;

推送的内容应多为大减价、大酬宾、跳楼价之类的;

由于这部分用户占比较多,可结合该群体流失情况分析流失客户因素,进行该群体市场的开拓,进一步进行下沉分析,开拓新的时长。

相关文章
|
5天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
垃圾识别分类系统。本系统采用Python作为主要编程语言,通过收集了5种常见的垃圾数据集('塑料', '玻璃', '纸张', '纸板', '金属'),然后基于TensorFlow搭建卷积神经网络算法模型,通过对图像数据集进行多轮迭代训练,最后得到一个识别精度较高的模型文件。然后使用Django搭建Web网页端可视化操作界面,实现用户在网页端上传一张垃圾图片识别其名称。
25 0
基于Python深度学习的【垃圾识别系统】实现~TensorFlow+人工智能+算法网络
|
5天前
|
机器学习/深度学习 人工智能 算法
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
手写数字识别系统,使用Python作为主要开发语言,基于深度学习TensorFlow框架,搭建卷积神经网络算法。并通过对数据集进行训练,最后得到一个识别精度较高的模型。并基于Flask框架,开发网页端操作平台,实现用户上传一张图片识别其名称。
21 0
【手写数字识别】Python+深度学习+机器学习+人工智能+TensorFlow+算法模型
|
5天前
|
机器学习/深度学习 人工智能 算法
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集('土豆', '大白菜', '大葱', '莲藕', '菠菜', '西红柿', '韭菜', '黄瓜'),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。
25 0
基于深度学习的【蔬菜识别】系统实现~Python+人工智能+TensorFlow+算法模型
|
9天前
|
算法 Python
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果
在Python编程中,分治法、贪心算法和动态规划是三种重要的算法。分治法通过将大问题分解为小问题,递归解决后合并结果;贪心算法在每一步选择局部最优解,追求全局最优;动态规划通过保存子问题的解,避免重复计算,确保全局最优。这三种算法各具特色,适用于不同类型的问题,合理选择能显著提升编程效率。
27 2
|
10天前
|
搜索推荐 Python
快速排序的 Python 实践:从原理到优化,打造你的排序利器!
本文介绍了 Python 中的快速排序算法,从基本原理、实现代码到优化方法进行了详细探讨。快速排序采用分治策略,通过选择基准元素将数组分为两部分,递归排序。文章还对比了快速排序与冒泡排序的性能,展示了优化前后快速排序的差异。通过这些分析,帮助读者理解快速排序的优势及优化的重要性,从而在实际应用中选择合适的排序算法和优化策略,提升程序性能。
24 1
|
5天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
4天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
5天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
6天前
|
设计模式 算法 搜索推荐
Python编程中的设计模式:优雅解决复杂问题的钥匙####
本文将探讨Python编程中几种核心设计模式的应用实例与优势,不涉及具体代码示例,而是聚焦于每种模式背后的设计理念、适用场景及其如何促进代码的可维护性和扩展性。通过理解这些设计模式,开发者可以更加高效地构建软件系统,实现代码复用,提升项目质量。 ####
|
5天前
|
机器学习/深度学习 存储 算法
探索Python编程:从基础到高级应用
【10月更文挑战第38天】本文旨在引导读者从Python的基础知识出发,逐渐深入到高级编程概念。通过简明的语言和实际代码示例,我们将一起探索这门语言的魅力和潜力,理解它如何帮助解决现实问题,并启发我们思考编程在现代社会中的作用和意义。