目录

  • 1 模块一  Python与机器学习概述
    • 1.1 Python与机器学习简介
    • 1.2 发展历程
    • 1.3 基本语法
    • 1.4 帮助
    • 1.5 应用
    • 1.6 示例源代码(食品识别小小专家系统)
    • 1.7 示例代码   蜡笔小新
    • 1.8 小结
    • 1.9 Python基础教程(教&学资料)
      • 1.9.1 安装Python
      • 1.9.2 第一个python程序
      • 1.9.3 Python基础
      • 1.9.4 函数
      • 1.9.5 高级特性
      • 1.9.6 函数式编程
      • 1.9.7 模块
      • 1.9.8 面向对象编程
      • 1.9.9 面向对象高级编程
      • 1.9.10 错误、调试和测试
      • 1.9.11 IO编程
      • 1.9.12 进程和线程
      • 1.9.13 正则表达式
      • 1.9.14 常用内建模块
      • 1.9.15 常用第三方模块
      • 1.9.16 图形界面
      • 1.9.17 网络编程
      • 1.9.18 电子邮件
      • 1.9.19 访问数据库
      • 1.9.20 Web开发
      • 1.9.21 异步IO
      • 1.9.22 使用MicroPython
      • 1.9.23 实战训练(day1~~day10)
        • 1.9.23.1 Day 1 - 搭建开发环境
        • 1.9.23.2 Day 2 - 编写Web App骨架
        • 1.9.23.3 Day 3 - 编写ORM
        • 1.9.23.4 Day 4 - 编写Model
        • 1.9.23.5 Day 5 - 编写Web框架
        • 1.9.23.6 Day 6 - 编写配置文件
        • 1.9.23.7 Day 7 - 编写MVC
        • 1.9.23.8 Day 8 - 构建前端
        • 1.9.23.9 Day 9 - 编写API
        • 1.9.23.10 Day 10 - 用户注册和登录
      • 1.9.24 Day 11 - 编写日志创建页
      • 1.9.25 Day 12 - 编写日志列表页
      • 1.9.26 Day 13 - 提升开发效率
      • 1.9.27 Day 14 - 完成Web App
      • 1.9.28 Day 15 - 部署Web App
      • 1.9.29 Day 16 - 编写移动App
    • 1.10 FAQ
    • 1.11 阶段总结
  • 2 PYthon程序示例
    • 2.1 程序示例(一)初识程序
    • 2.2 程序示例(二)查看今天是今年的第几天
    • 2.3 程序示例(三)if elif else语句
    • 2.4 程序示例(四)元组,列表, 堆栈,队列
    • 2.5 程序示例(五)学玩游戏《学色彩  神魔三龟玩变色》
    • 2.6 程序示例(六)函数
    • 2.7 程序示例(七)字符串
    • 2.8 程序示例(八)文件
    • 2.9 程序示例(九)排序
    • 2.10 程序示例-机器学习中英单词翻译小专家
    • 2.11 程序示例      画花朵  &  画佩奇
    • 2.12 程序示例   华夏时钟
    • 2.13 示例:  显示图片,响声
    • 2.14 播放声音视频文件mp3、wmv、wav、m4a等)
    • 2.15 Python WEB开发技术实战
  • 3 模块2 NumPy数值计算
    • 3.1 ndarray创建与索引
    • 3.2 ndarray的基础操作
    • 3.3 ufunc
    • 3.4 小结
    • 3.5 习题与实训
  • 4 模块3   pandas基础
    • 4.1 pandas常用类
    • 4.2 DataFrame基础操作
    • 4.3 其他数据类型操作
    • 4.4 小结
    • 4.5 习题与实训
    • 4.6 练习题
  • 5 模块4 pandas进阶
    • 5.1 数据读取与写出
    • 5.2 DataFrame进阶
    • 5.3 数据准备
    • 5.4 小结
    • 5.5 习题与实训
    • 5.6 练习习题及解答(参考)
  • 6 模块5 Matplotlib基础绘图
    • 6.1 Matplotlib绘图基础
    • 6.2 分析特征关系常用图形
    • 6.3 分析特征内部数据状态常用图形
    • 6.4 小结
    • 6.5 习题与实训
  • 7 模块6 机器学习库 scikit-learn
    • 7.1 数据准备
    • 7.2 降维
    • 7.3 分类
    • 7.4 回归
    • 7.5 聚类
    • 7.6 模型选择
    • 7.7 小结
    • 7.8 习题与实训
  • 8 模块7 餐饮企业综合分析
    • 8.1 (案例)餐饮企业分析需求
    • 8.2 数据准备
    • 8.3 使用K-means算法进行客户价值分析
    • 8.4 使用决策树算法实现餐饮客户流失预测
    • 8.5 小结
    • 8.6 习题与实训
  • 9 模块8  通信运营商客户流失分析与预测
    • 9.1 通信运营商客户流失分析需求
    • 9.2 数据准备
    • 9.3 特征工程
    • 9.4 使用多层感知器算法实现通信运营商 客户流失预测
    • 9.5 小结
    • 9.6 习题与实训
  • 10 学习参考资源
    • 10.1 机器学习的通俗讲解
    • 10.2 十大机器学习算法及其应用
    • 10.3 常用机器学习算法优缺点及其应用领域
    • 10.4 轻松学会 Python turtle 绘图
    • 10.5 Python 习题库
      • 10.5.1 习题1
    • 10.6 上机操作实训库
    • 10.7 面试准备题
    • 10.8 Python 程序扩展名 及发布程序时的选择
    • 10.9 计算机Python考试大纲
    • 10.10 Python  基础知识点梳理
    • 10.11 Python常用模块大全
    • 10.12 机器学习基本术语
    • 10.13 几个机器学习的成功案例
    • 10.14 60个机器学习算法应用场景实例
  • 11 章节测验(必测)
    • 11.1 测验一
    • 11.2 测验二
    • 11.3 测验三
    • 11.4 测验四
    • 11.5 测验五
    • 11.6 测验六
    • 11.7 测验七
    • 11.8 测验八
    • 11.9 测验九
    • 11.10 测验十
    • 11.11 编程专项测验
    • 11.12 填空题专项测验
    • 11.13 判断题专项测试
    • 11.14 简答题专项测试
    • 11.15 《机器学习技术》总复习
    • 11.16 书本--习题参考解答
  • 12 综合实训项目及展示
    • 12.1 项目(一)作品展示(1)
    • 12.2 项目(一)作品展示(2)
    • 12.3 团队项目实训(必作!)
(案例)餐饮企业分析需求

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


 1、餐饮企业现状与需求

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

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

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

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

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

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

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

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


3、数据准备

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

 

 

4、数据预处理

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

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

 

       

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

 客户群    排名   排名含义

客户群1    2    一般价值客户

客户群2    1    重要保持客户

客户群3    3   低价值客户