【数学建模】2018年数学建模国赛C题解答 基于RFMT 模型的百货商场会员画像描绘

文章目录

  • 问题一
  • 问题二
    • 求出RFM数据
    • 评分
    • K- Means聚类
  • 问题三
  • 问题四
  • 问题五
  • 参考文献

在这里插入图片描述

问题一

利用该大型百货商场提供的附件一中的会员信息以及附件三中的会员消费明细,完善该商场的会员画像。本文从购买力、购买时间偏好两个维度分析会员的消费特征。以会员消费总金额、消费次数、商品购买数量代表会员购买力,同时按季节对会员消费行为进行分析。

同时对会员与非会员的消费次数和,商品购买金额💰进行分析。

代码详见以下链接
问题一代码

问题二

引入RFMT模型衡量会员价值和刻画会员购买能力
将不同会员的RFM数据排序后从1-5的分数进行评分
K-means聚类分析

求出RFM数据

data_vip.to_csv('vip.csv',encoding = 'gb18030', index = None)
dvip = pd.read_csv('./vip.csv',encoding='gbk')
dvip
#获取日期数据精确到day
dvip['dtime']=pd.to_datetime(dvip.dtime).dt.date
#截取需要的数据
data_new = dvip[['kh','je','year','sl','dtime']]
data_new
#构建FRM模型需要选取时间段统计,本次统计的时间范围选为2017年至2018年1月3日
data_new = data_new[data_new.year>2016]
data_new.year.unique()
data_new.drop("year",inplace=True,axis=1)
#以2018-01-03为截止日期,计算登记日期与截止日期的天数
data_new['end_time'] = '2018-01-03'
pd.to_datetime(data_new.end_time)
data_days = pd.DataFrame(pd.to_datetime(data_new.end_time)-pd.to_datetime(data_new.dtime),columns=['R'])
data_new2 = pd.concat([data_new,data_days],axis=1)
data_new2
data_new2.R = data_new2.R.map(lambda x:str(x).split(' ')[0])
data_new2.reset_index(drop=True)
#构建RFM字段中的R字段,即客户最近购买的事件与截止时间相差的日期
data_new2.R = data_new2.R.map(lambda x:int(x))
data_R = data_new2.groupby('kh').agg({'R':'min'}).reset_index()
data_R
#构建FM字段
data_F = data_new2.groupby('kh').agg(F=pd.NamedAgg(column='kh',aggfunc='count')).reset_index()
data_M = data_new2.groupby('kh').agg(F=pd.NamedAgg(column='je',aggfunc='sum')).reset_index()
#合并3个字段,构建RFM数据
data_RF=pd.merge(data_R,data_F,on="kh",how="inner")
data_RFM=pd.merge(data_RF,data_M,on="kh",how="inner")
data_RFM

在这里插入图片描述

data_RFM.columns=['kh','R','F','M']

评分

train_data = data_RFM.iloc[:,[1,2,3]]
train_data
# 评分
for name in train_data.columns:if name=="R":ascending = Falseelse:ascending = Truetrain_data.sort_values(by=[name],inplace=True, ascending=ascending)train_data.reset_index(drop=True, inplace=True)n = train_data.shape[0]for i in range(1, 6):b = 0.2*n*(i-1)e = 0.2*n*itrain_data.loc[b:e, name] = i
for name in train_data.columns:print(name,"   ", train_data[name].min(),"   ", train_data[name].max())
train_data.head()

K- Means聚类

#需要进行的聚类类别数
k = 8
kmodel = KMeans(n_clusters = k) 
#训练模型
kmodel.fit(train_data) #查看聚类中心
print(kmodel.cluster_centers_) 
#查看各样本对应的类别
print(kmodel.labels_ )
print(kmodel.cluster_centers_.shape)
# 简单打印结果
r1 = pd.Series(kmodel.labels_).value_counts() #统计各个类别的数目
r2 = pd.DataFrame(kmodel.cluster_centers_) #找出聚类中心# 所有簇中心坐标值中最大值和最小值
max = r2.values.max()
min = r2.values.min()
r = pd.concat([r2, r1], axis = 1) #横向连接(0是纵向),得到聚类中心对应的类别下的数目
r.columns = list(train_data.columns) + [u'类别数目'] #重命名表头# 绘图
fig=plt.figure(figsize=(10, 8))
ax = fig.add_subplot(111, polar=True)
center_num = r.values
feature = list(train_data.columns)
#feature = ['消费总金额', '消费频率', '入会时长', '消费次数', '最近一次消费', '平均消费金额']
N =len(feature)
for i, v in enumerate(center_num):# 设置雷达图的角度,用于平分切开一个圆面angles=np.linspace(0, 2*np.pi, N, endpoint=False)# 为了使雷达图一圈封闭起来,需要下面的步骤center = np.concatenate((v[:-1],[v[0]]))angles=np.concatenate((angles,[angles[0]]))# 绘制折线图ax.plot(angles, center, 'o-', linewidth=2, label = "Group %d population,%d"% (i+1,v[-1]))# 填充颜色ax.fill(angles, center, alpha=0.25)# 添加每个特征的标签ang = angles*180/np.piax.set_thetagrids(ang[:-1], feature, fontsize=15)# 设置雷达图的范围ax.set_ylim(min-0.1, max+0.1)# 添加标题plt.title('Analysis of customer group characteristics', fontsize=20)# 添加网格线ax.grid(True)# 设置图例plt.legend(loc='upper right', bbox_to_anchor=(1.3,1.0),ncol=1,fancybox=True,shadow=True)# 显示图形
#plt.savefig("%s类.png"%k)
plt.show()

在这里插入图片描述

r['分数'] = r['R'] + r['F'] + r['M']
r.sort_values('分数', ascending=False, inplace=True)
tmp = r['类别数目']
tmp3 = tmp/r['类别数目'].sum()
ind = ['Important value customer', 'Important recall customer', 'Important deep-cultivation customer', 'Important to retain customer', 'In-depth customer', 'New customer', 'General maintenance customer', 'Closed customer']
tmp3.index = ind
print(tmp3)

在这里插入图片描述

ax = tmp3.plot.barh(stacked=True,colormap = 'Blues_r') 
ax.figsize=(35, 35)
ax.set_xlabel('Proportion')  # 设置x轴标签
ax.set_ylabel('customer type') # 设置y轴标签
fig = ax.get_figure()  # 用于保存图片
#fig.savefig('客户价值分类图.png',bbox_inches = 'tight')  # 保存为png格式

在这里插入图片描述

问题三

问题二的RFM模型选取R和F指标做聚类分析
使用聚类分析对有消费记录的会员进行状态聚类
得到生命周期状态

考虑到会员的消费行为对状态的影响,在问题二的RFMT 模型的基础上,运用spss modeler软件对会员的R、F、M、T 四个指标数据进行K-means 聚类,选取模型中的R 和F 指标作为聚类依据,建立聚类模型对会员状态进行分类。
根据会员的R、F、M、T 指标数据,运用Clementine 软件进行K-means 聚
类,建立聚类模型,选择聚类数为3 类,一共迭代六次。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
根据结果对会员类型划分为三类,分别为流失会员、活跃会员、沉默会员。

问题四

马尔可夫转移矩阵得到激活率
线性回归得到销售量和激活率的关系

问题五

在这里插入图片描述
![在这里插入图片描述](https://img-blog.csdnimg.cn/6afd49e09cf64916b22f408d7fcb883b.png)

还未想到可实现的方法,未完待续。

参考文献

基于FRM模型的百货商场用户画像描绘与价值分析

Description-and-Value-analysis-of-user-portraits-in-department-stores

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/22759.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2022年华中杯数学建模挑战赛B题量化投资问题求解全过程文档及程序

2022年华中杯数学建模 B题 量化投资问题 原题再现: 量化投资是指通过数量化方式及计算机程序化发出买卖指令,以获取稳定收益为目的的交易方式。投资者通过数据分析探索市场运行规律,并预测市场走势,从而进行决策交易。随着大数据…

【数模国赛参赛情况浅析】

今天给大家带来近几年的国赛参赛以及国奖评阅等情况。由于19年开始国赛才新增C题(据说是鼓励数学学得较浅的文商科等专业学生参加),因此我们从19年开始对19-21年的参赛数据进行浅析。 •参赛规模 19-20: 21: 2021数模…

2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛

(1)2022年11月1日-12月20日 报名阶段 (2)2022年12月20日18:00至2023年1月19日20:00,初赛阶段 (3)2023年3月6日18:00-2023年3月13日20:00,复赛阶段 关注我,后续分享数学…

2022MathorCup高校数模挑战赛D题思路

D 题 移动通信网络站址规划和区域聚类问题 目录背景阐述问题 1描述解题思路 问题 2描述解题思路 问题 3描述解题思路 结语 今年D题应该选择的人比较多,是典型的目标优化类题目。这道题难度简单一点,估计很多同学都会选这道题,当然拿奖也会难一…

数模比赛经验分享(美赛分享)

目录 队员寻找 队员任务分配 赛前准备 知识准备 模拟赛 相互监督 每个阶段的主要任务 学习阶段 论文研读阶段 实践阶段 改进阶段 比赛注意事项 有用的资源分享 数模学习 数据网站 画图工具 祝愿 队员寻找 对于队员的要求,我认为只要一个特点就行…

2020年MathorCup高校数学建模挑战赛—大数据竞赛A题移动通信基站流量预测求解全过程文档及程序

2020年MathorCup高校数学建模挑战赛—大数据竞赛 A题 移动通信基站流量预测 原题再现: 随着移动通信技术的发展,4G、5G 给人们带来了极大便利。移动互联网的飞速发展,使得移动流量呈现爆炸式增长,从而基站的流量负荷问题变得越来…

数模美赛分享(时间安排+获奖技巧+比赛思路)

数模美赛分享(时间安排获奖技巧比赛思路数模分工) 本贴所有内容全部干货,时间有限,先简单分享一下,深入学习,请见附录b站视频 一、 时间安排 二、获奖技巧 三、 比赛思路 四、 数模分工 三个人分工如下&…

2023年MathorCup数模A题赛题

A 题 量子计算机在信用评分卡组合优化中的应用 在银行信用卡或相关的贷款等业务中,对客户授信之前,需要先通过 各种审核规则对客户的信用等级进行评定,通过评定后的客户才能获得信 用或贷款资格。规则审核过程实际是经过一重或者多重组合规则…

2022 年 MathorCup 高校数学建模挑战赛——大数据竞赛(北京移动用户体验影响因素研究全套代码)

赛道 B:北京移动用户体验影响因素研究 移动通信技术飞速发展,给人们带来了极大便利,人们也越来越离不开移动通信技术带来的各种便捷。随着网络不断的建设,网络覆盖越来越完善。各个移动运营商,越来越重视客户的网络使…

2023年MathorCup数模C题赛题

C 题 电商物流网络包裹应急调运与结构优化问题 问题C,题目的设置就是本科生专科生选题,因此在题目难度上应该会和AB,有明显的区别。整个问题的设置还是很符合妈杯的风格设置,下面我们简要的看一下各个题目设置。 问题 1&#xff1…

【数模研赛】“华为杯”第十九届中国研究生数学建模竞赛C题分享——(四)问题二模型建立

写在前面: 第十九届数模研赛在22年10月6-10日开展,我和我的两名队友肝了5天,整出来一篇论文。因为不确定自己做的好不好,所以一直没写博客。前两天结果出来了,我们队拿了国二,在C题里排名88/1134&#xff0…

8月的数模比赛,适合小白为国赛热热身,可以报名了!

​经常有同学在交流群问:小白怎么入门?该从什么学起? 在入门指导的文章中曾讲过:实战是最好的学习。直接参赛,遇到不会的就去搜、去翻书,现学现用,多做几次比赛就入门了。 现在8月份的华数杯已…

2019-12-02 校内数模新手赛

调查地铁站的路径选择问题 摘要 对于一二线城市,地铁已成为民众不可或缺的出行方式,为了减少在上班上学路上消耗的时间,人们也可谓绞尽脑汁。这次,我们要帮助p同学,在他解决地铁"最佳门"问题时提供耗时最短…

2021年MathorCup高校数学建模挑战赛——大数据竞赛赛道A -思路分享

4.8号公布了复赛获奖名单,比赛正式告一段落,为什么现在才开始写呢?其实一是最近一直很忙,二是感觉自己做的不咋地,趁今天有空就写写吧,时间一长就又不想写了。 好了胡扯到此结束,言归正传&#…

第五届“传智杯”全国大学生计算机大赛(练习赛)传智杯 #5 练习赛] 平等的交易

[传智杯 #5 练习赛] 平等的交易 题目描述 你有 n n n 件道具可以买,其中第 i i i 件的价格为 a i a_i ai​。 你有 w w w 元钱。你仅能用钱购买其中的一件商道具。当然,你可以拿你手中的道具换取其他的道具,只是这些商道具的价值之和&…

数学建模相关比赛汇总(含各赛事官方网站链接)

前言 官网可以进行资料下载,历年的建模题等可在官网下载; 注册、报名、缴费、选题、显示论文收到与否、最新Summary论文模板的下载、查询获奖结果。 按含金量笔者分为四个梯队,如有不妥,请发私信联系楼主。 第一梯队:…

MathorCup高校数学建模挑战赛——大数据竞赛 赛道A 移动通信基站流量预测baseline

文章目录 前言一、简单分析二、具体程序1.引入库2.读入数据3.数据处理4.模型训练和预测5.结果文件输出 总结 前言 本文给出2020年MathorCup高校数学建模挑战赛——大数据竞赛中的赛道A移动通信基站流量预测的baseline,这个题目的具体描述和数据集请见链接。 整个程…

2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛 赛道B 北京移动用户体验影响因素研究 问题一建模方案及代码实现详解

【BetterBench原创】2022年第三届MathorCup高校数学建模挑战赛——大数据竞赛 赛道B 北京移动用户体验影响因素研究 建模方案及代码实现(更新中) 更新进展 2022年12月21日 12:20 发布问题一、二思路及问题一的python代码实现 2022年12月22日 15:00 发…

鬼畜提问变身指南:ChatGPT十个打破常规的提问公式

Chatgpt的恐怖之处不在于它有多么的准确,很多时候它的回答甚至充满常识性错误,比如你问美国为什么轰炸珍珠岛它都能一本正经的回答你(这当然也有中文语料数据投喂不足和中文本身就复杂而难以理解的原因,听说用英文提问的准确性会提…

ChatGPT怎么用?30句提问公式,一定有你的行业能用到的一句

在使用ChatGPT过程中,总感觉用ChatGPT的效果没有那么好。经过多次使用和摸索,终于发现了问题,原来不是ChatGPT不好用,效果不好,而是因为我之前不会提问。 话不多说,给大家准备了30句ChatGPT提问公式&#…