Python机器学习1-餐饮企业综合分析

1、餐饮企业现状与需求

        餐饮行业作为我国第三产业中的一个传统服务性行业,始终保持着旺盛的增长势头,取得了突飞猛进的发展,展现出繁荣兴旺的新局面。与此同时,我国餐饮业发展的质量和内涵也发生了重大变化。根据国家统计局数据显示,餐饮行业餐费收入从2006到2015年都处于增长的趋势,但是同比增长率却有很大的波动,如右图所示。

 

       某餐饮企业正面临着房租价格高、人工费用高、服务工作效率低等问题。企业经营最大的目的就是盈利,而餐饮企业盈利的核心是其菜品和客户,也就是其提供的产品和服务对象。如何在保证产品质量的同时提高企业利润,成为某餐饮企业急需解决的问题。

2、餐饮企业数据分析的步骤与流程

       通过对某餐饮企业的数据进行分析,最终为餐饮企业提出改善的建议。主要步骤如下图所示。

 

(1)从系统数据库中迁移与分析相关的数据到分析数据库中,包括客户信息、菜品详情、订单表和订单详情等。

(2)对数据进行预处理,统计菜品数据中的每日用餐人数、每日销售额并进行数据清洗等。

(3)进行特征工程,构建RFM特征和客户流失特征。

(4)使用K-means算法,对客户进行聚类分析,并基于聚类结果进行客户价值分析。

3、数据准备

        订单表(meal_order_info.csv)和客户信息表(users.csv)中包含2016年8月份的订单和对应客户的数据,将使用该部分数据进行客户价值聚类分析。历史订单表(info_new)和历史客户信息表(user_loss)包含2016年1~7月份的订单和对应客户的数据,将使用该部分数据构建客户流失预测模型,统计每日用餐人数与销售额。

 

4、数据预处理

        原始数据中的客户信息表(users.csv)没有直接给出客户最后一次消费的时间,订单表(meal_order_info.csv)中存在未完成的订单,如订单状态为0或2,且存在其不相关、弱相关或冗余的特征,所以需要先对原始数据进行预处理,如下代码所示。

info_august = pd.read_csv('../data/meal_order_info.csv', encoding='utf-8')
users_august = pd.read_csv('../data/users.csv', encoding='gbk')
# 提取订单状态为1的数据
info_august_new = info_august[info_august['order_status'].isin(['1'])]
info_august_new = info_august_new.reset_index(drop=True)
print('提取的订单数据维数:', info_august_new.shape)
info_august_new.to_csv('../tmp/info_august_new.csv', index=False, encoding='utf-8')

# 匹配用户的最后一次用餐时间
for i in range(1, len(info_august_new)):
    num = users_august[users_august['USER_ID'] ==
                       info_august_new.iloc[i-1, 1]].index.tolist()
    users_august.iloc[num[0], 14] = info_august_new.iloc[i-1, 9]
    users_august.iloc[num[0], 14] = info_august_new.iloc[i-1, 9]

user = users_august
user['LAST_VISITS'] = user['LAST_VISITS'].fillna(999)
user = user.drop(user[user['LAST_VISITS'] == 999].index.tolist())
user = user.iloc[:, [0, 2, 12, 14]]
print(user.head())
user.to_csv('../tmp/users_august.csv', index=False, encoding='utf-8')

5、使用K-means算法进行客户价值分析

        聚类可以从消费者中区分出不同的消费群体,并且概括出每一类消费者的消费模式或消费习惯,其中,K-Means算法是最为经典的基于划分的聚类方法。识别客户价值应用最广泛的模型是RFM模型,根据RFM模型,本案例中客户价值分析的关键特征,如下表所示。

特征名称

含义

R

客户最近一次消费距观测窗口结束的天数。

F

客户在观测窗口内总消费次数。

M

客户在观测窗口内总消费金额。

         使用K-means算法进行客户价值分析,如下代码所示。

# 绘图
fig = plt.figure(figsize=(7, 7))
ax = fig.add_subplot(111, polar=True)
sam = ['r','g','b']
lstype = ['-','--','-.']
lab = []
for i in range(len(kmeans_model.cluster_centers_)):
    values = kmeans_model.cluster_centers_[i]
    feature = ['R','F','M']
    values = np.concatenate((values, [values[0]]))
    # 绘制折线图
    ax.plot(angles, values, sam[i], linestyle=lstype[i], linewidth=2, markersize=10)
    ax.fill(angles, values, alpha=0.5)  # 填充颜色
    ax.set_thetagrids(angles * 180 / np.pi, feature, fontsize=15)  # 添加每个特征的标签
    plt.title('客户群特征分布图')  # 添加标题
    ax.grid(True)
    lab.append('客户群' + str(i+1))
plt.legend(lab)
plt.show()
plt.close

       

       由上图可知,客户群2的F、M特征值最大,R特征值最小;客户群1的F、M、R特征值较小;客户群3的R特征值最大,F、M特征值最小。每个客户群的都有显著不同的表现特征,基于该特征描述,本案例定义3个等级的客户类别:重要保持客户、一般价值客户、低价值客户。客户群分类排序结果如下表所示。

客户群

排名

排名含义

客户群1

2

一般价值客户

客户群2

1

重要保持客户

客户群3

3

低价值客户

 

  • 14
    点赞
  • 169
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值