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

这篇具有很好参考价值的文章主要介绍了【数学建模】2018年数学建模国赛C题解答 基于RFMT 模型的百货商场会员画像描绘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


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

问题一

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

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

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

问题二

求出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

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

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 = False
    else:
        ascending = True
    train_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*i
        train_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.pi
    ax.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()

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

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)

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

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格式

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

问题三

考虑到会员的消费行为对状态的影响,在问题二的RFMT 模型的基础上,运用spss modeler软件对会员的R、F、M、T 四个指标数据进行K-means 聚类,选取模型中的R 和F 指标作为聚类依据,建立聚类模型对会员状态进行分类。
根据会员的R、F、M、T 指标数据,运用Clementine 软件进行K-means 聚
类,建立聚类模型,选择聚类数为3 类,一共迭代六次。
【数学建模】2018年数学建模国赛C题解答 基于RFMT 模型的百货商场会员画像描绘
【数学建模】2018年数学建模国赛C题解答 基于RFMT 模型的百货商场会员画像描绘

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

【数学建模】2018年数学建模国赛C题解答 基于RFMT 模型的百货商场会员画像描绘
根据结果对会员类型划分为三类,分别为流失会员、活跃会员、沉默会员。

问题四

问题五

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

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

参考文献

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

Description-and-Value-analysis-of-user-portraits-in-department-stores文章来源地址https://www.toymoban.com/news/detail-492461.html

到了这里,关于【数学建模】2018年数学建模国赛C题解答 基于RFMT 模型的百货商场会员画像描绘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2023国赛数学建模B题思路模型代码 高教社杯

    本次比赛我们将会全程更新思路模型及代码, 大家查看文末名片获取 之前国赛相关的资料和助攻可以查看 2022数学建模国赛C题思路分析_2022国赛c题matlab_UST数模社_的博客-CSDN博客 2022国赛数学建模A题B题C题D题资料思路汇总 高教社杯_2022国赛c题matlab_UST数模社_的博客-CSDN博客 我

    2024年02月09日
    浏览(41)
  • 2023国赛数学建模C题思路模型代码 高教社杯

    C题代码全部都完成了,可以看文末名片 我们先看C题的一个背景 在生鲜商超中,蔬菜类商品保鲜期短,且品相会随销售时间增加而变差。商超需要根据历史销售和需求每天进行补货。由于蔬菜品种众多、产地不同,补货时间在凌晨,商家须在不明确具体单品和价格的情况下进行补

    2024年02月11日
    浏览(46)
  • 2023国赛数学建模E题思路模型代码 高教社杯

    本次比赛我们将会全程更新思路模型及代码, 大家查看文末名片获取 之前国赛相关的资料和助攻可以查看 2022数学建模国赛C题思路分析_2022国赛c题matlab_UST数模社_的博客-CSDN博客 2022国赛数学建模A题B题C题D题资料思路汇总 高教社杯_2022国赛c题matlab_UST数模社_的博客-CSDN博客 我

    2024年02月11日
    浏览(33)
  • 2023国赛数学建模D题思路模型代码 高教社杯

    本次比赛我们将会全程更新思路模型及代码, 大家查看文末名片获取 之前国赛相关的资料和助攻可以查看 2022数学建模国赛C题思路分析_2022国赛c题matlab_UST数模社_的博客-CSDN博客 2022国赛数学建模A题B题C题D题资料思路汇总 高教社杯_2022国赛c题matlab_UST数模社_的博客-CSDN博客 我

    2024年02月09日
    浏览(48)
  • 2023国赛数学建模A题思路模型代码汇总 高教社杯

    本次比赛我们将会全程更新思路模型及代码, 大家查看文末名片获取 之前国赛相关的资料和助攻可以查看 2022数学建模国赛C题思路分析_2022国赛c题matlab_UST数模社_的博客-CSDN博客 2022国赛数学建模A题B题C题D题资料思路汇总 高教社杯_2022国赛c题matlab_UST数模社_的博客-CSDN博客 我

    2024年02月11日
    浏览(42)
  • 【2023数学建模国赛】A题定日镜场的优化设计模型建立

    2023年全国大学生数学建模竞赛A题定日镜场的优化设计,目前已写出第四版国赛A题思路和模型详细公式,目录如下: 一、 问题重述... 1 二、 问题分析... 1 三、 模型假设... 6 四、 问题一模型的建立和求解... 6 4.1 定日镜场坐标系的建立... 6 4.2 定日镜相关参数及顶点坐标计算

    2024年02月09日
    浏览(38)
  • 【2023高教社杯数学建模国赛】ABCD题 问题分析、模型建立、参考文献及实现代码

    北京时间:2023年9月7日 18:00-2023年9月10日20:00 可以参考我提供的历史竞赛信息内容,最新更新我会发布在博客和知乎上, 请关注我 获得最新更新通知 http://t.csdn.cn/UX52d 2023高教社杯9月7号18点开赛,本团队会出全部题的资料,开赛赛预售最低价,下单后进群,不确定选哪个题的

    2024年02月09日
    浏览(51)
  • 【数学建模美赛 | 国赛必学模型算法精讲】层次分析法——模型原理及Matlab+Python双语言代码演示

    层次分析法 是 评价决策类 中一个比较常用的方法,很多留意美赛赛题的小伙伴们就会发现,在美赛EF类题目的历年O奖论文中,层次分析法出现的概率是非常高的。层次分析法呢一般是针对评价决策类的题目,让我们评价或选择一个可能更好、更优的政策及方案,那这样呢,

    2024年01月25日
    浏览(47)
  • 2023高教社杯数学建模A题B题C题D题E题思路模型 国赛建模思路分享

    (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?type=blog 全国大学生数学建模竞赛(以下简称竞赛)是中国工业与应用数学学会主办的面向全国大学生 的群众性科技活动,旨在激励学生学习数学的积极性,提高学生建立数学模型和运用计算机技术解 决实际问题的

    2024年02月10日
    浏览(36)
  • 2023高教社杯国赛数学建模C题思路+模型+代码(9.7晚开赛后第一时间更新)

    目录 1.C题思路模型:9.7晚上比赛开始后,第一时间更新,获取见文末名片 2.竞赛注意事项:包括比赛流程,任务分配,时间把控,论文润色,已经发布在文末名片中 3.常用国赛数学建模算法  3.1 分类问题 3.2 优化问题 4.获取赛题思路模型见此名片 判别分析: 又称“分辨法”

    2024年02月10日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包