目录

  • 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 团队项目实训(必作!)
数据准备

如我们所知,数据分析工作的70%的时间都用作于数据清洗,数据探索和数据准备当中,这可以说是数据分析的核心所在。数据清洗主要是工具层面上的。这里讨论数据探索和数据准备的六大步骤。

变量的识别

单变量的分析

双变量的分析

处理缺失值

处理异常值

特征提取(Feature Engineering)

变量的识别

在对数据分析之前,我们需要去识别变量,去了解变量的类型和数据的类型。比如判别变量是分类型变量的还是连续型变量,是二分类还是有序变量。这些知识在任何一本统计学书上第一章都会详细介绍。

单变量的分析

识别完变量之后,我们算是初步的了解了数据的全貌,知道其大概表示什么。接下来我们应该对每一个变量进行分析,以期更深入的了解数据,并希望从中得到一个假设,以便接下来的检验。对于单变量的分析,我们根据单变量的类型进行特定的分析。

连续型变量:

概括性度量:均数,中位数,众数,最大值,最小值,极差,百分位数,四分位数,方差,标准差,偏度和峰度。

图形:直方图和箱型图

检验:检验其分布:P-P图和K-S单样本检验

分类型变量:主要是要频数表(频率表)去了解其分布,图形主要是用条形图,也可以用游程检验去检验其是否随机,以判定抽样是否随机。

双变量的分析

进行完单变量的分析后,我们对数据有了更深的理解,下面我们该进行双变量的分析。我们进行双变量的分析主要有两个目的,第一,我们想知道我们的目标变量与已知变量之间有什么关系;第二,我们想验证在单变量分析中得出的假设。双变量的分析可以分为三类:

连续型与连续型:对于两个连续型数据的分析,我们主要是用散点图和相关系数去判定。通过散点图看出两者是否有线性关系,在通过计算相关系数去判定关系的强弱。

分类型与分类型:而对于两个分类型数据的分析,我们可以用交叉分组表,堆积条形图和卡方检验去验证两者之间的关系。

分类型与连续型:分类型和连续型数据的分析,我们主要用到t检验和方差分析

处理缺失值

在数据分析中,缺失值是一个很让人头疼的问题,有时候缺失值过多,以至于根本无法进行数据分析。我们这里讨论一下如何处理数据中的缺失值。

缺失值产生的原因无外乎两个:一、数据提取时出错,也就是自己操作出错,这个很好说,重新提取或检查一遍即可;二、数据收集时出错,这个很就不好解决。

缺失值处理:

删除:1.整行删除:对有缺失值的数据,整行删除。这样虽然简单,但是也削弱了模型的功能;2.只删除缺失值:这样虽然保存了较多的数据,但是使得数据中不同的变量有不同的样本量,不利于比较。

替代:计算其均值/中位数/众数去代替缺失值,这也是最常用的方法。

预测模型:以没有缺失值的数据为训练数据,以有缺失值的数据为测试数据,建立预测模型,预测其缺失值。缺点是,若变量之间没有关系,则预测的值根本不准。

KNN代替:用最邻近算法计算出其最邻近的属性,以那个属性的值代替缺失值。优点是,不管是分类型还是数值型的都可以操作,缺点是,太费时间。

处理异常值

对于异常值,我们可以说是对它喜忧参半,如果异常值是自然存在的,我们就可以对异常值进行一系列分析,比如用于欺诈检测,入侵检测等。但是大部分异常值的是人为产生的,其产生原因可能是录入错误、测量误差、实验误差、抽样误差等产生。这些异常值通常会混淆我们的视听,影响我们对数据的理解,破坏数据之间的联系,因此我们该学会如何去处理异常值。

检测异常值:

图形:箱图、直方图、散点图

在1.5倍的四分位差之外的数据可定为异常值

在数据的5%-95%之外的数据可定为异常值

在均值的三个标准差之外的数据

用聚类分析的方法检测异常值(马氏距离和Cook’s D距离)

处理异常值:

删除:如果是录入错误,或数据为很小的一部分即可删除。

转换变量和聚类:有时候通过一些简单的变量转换和聚类即可减少异常值对整体数据的影响

替换:用均值/中位数/众数去代替异常值

分开处理:若其为自然的异常值,且数据较多,我们就可以将其另分一组,进行分析

特征提取(Feature Engineering)

在建模之前,特征提取是极其重要的步骤,它的好坏直接影响你模型的好坏,所以我们必须去学习如何实现特征提取。

特征提取就是从已知的数据中提取更多的信息,你不加入任何数据,但是你却让你的数据更加有用。

特征提取的方法有:变量转换和变量创建。

变量转换:当我们需要改变数据的度量(标准化)或需要把非相关改为相关或改变变量分布时,我们需要用到变量转换,比如进行对数,平方/立方根,分组等方式。

变量创建:我们都是基于现有的变量来创建新变量。比如说我们可以以上变量转换的方法形成新的变量,也可以把分类变量进行数值化,以便于分析等。

总结一下:进行数据探索我们需要6个步骤

识别变量:分类型?数值型?

单变量分析:数值描述,图表描述,检验分布

双变量分析:线性关系?相关?

处理缺失值:删除?代替?预测?

处理异常值:如何检测?如何移除?

特征提取:一般有哪些提取方法?

以上就是数据探索和数据准备的一些步骤,这些步骤不去实践永远都不会用作用,所以我们应该去多做分析,多去探索。

对于具体的实际应用,应该结合实际认真做好数据准备、

在此实例,包括:

订单表(meal_order_info.csv)和客户信息表(users.csv)中

例如:包含2016年8月份的订单和对应客户的数据,将使用该部分数据进行客户价值聚类分析。历史订单表(info_new)和历史客户信息表(user_loss)包含2016年1~7月份的订单和对应客户的数据,将使用该部分数据构建客户流失预测模型。

统计订单表和历史订单表中每日用餐人数与销售额。

具体参考教材及PPT等资料。