机器学习之基础知识(全),机器学习基础知识的全面解析

马肤

温馨提示:这篇文章已超过411天没有更新,请注意相关的内容是否还可用!

摘要:本文介绍了机器学习的全基础知识,包括基本概念、算法原理、应用领域等方面的内容。文章详细解释了监督学习、无监督学习、半监督学习等不同类型的机器学习方法,并探讨了它们在数据分析、自然语言处理等领域的应用。本文为读者提供了全面的机器学习知识体系,帮助初学者快速入门并理解机器学习的基本原理。

目录

1.机器学习概述

1.1 人工智能概述

1.1.1 人工智能使用场景

1.1.2 人工智能小案例

1.2 人工智能发展历程

1.2.1 图灵测试

1.2.2 发展历程

1.2.3 小结

1.3 人工智能主要分支

1.3.1 人工智能、机器学习和深度学习

1.3.2 主要分支介绍

1.3.3 人工智能发展必备三要素

1.3.4 拓展:GPU和CPU对比

1.4 机器学习工作流程

1.4.1 什么是机器学习

1.4.2 机器学习工作流程

1.4.3 获取到的数据集介绍

1.4.4 数据基本处理

1.4.5 特征工程

1.4.6 机器学习和模型评估概念

1.5 机器学习算法分类

1.5.1 监督学习

1.5.2 无监督学习

1.5.3 半监督学习

1.5.4 强化学习

1.5.5 小结

1.6 模型评估

1.6.1 分类模型评估

1.6.2 回归模型评估

1.6.3 拟合

1.7 Azure平台简介

1.8 深度学习简介【了解】

1.8.1 深度学习--神经网络简介

1.8.2 深度学习各层负责的内容

2.机器学习基础环境安装与使用

2.1 库的安装 

2.2 Jupyter Notebook的使用

2.2.1 Jupyter Notebook介绍

2.2.2 为什么使用Jupyter Notebook

2.2.3 简单操作介绍

2.2.4 markdown功能

3.Matplotlib详讲

3.1 Matplotlib之HelloWorld

3.1.1 什么是Matplotlib

3.1.2 为什么要学 Matplotlib

3.1.3 实现一个简单的Matplotlib画图

3.1.4 认识Matplotlib图像结构(拓展,了解)

3.1.5 Matplotlib三层结构(拓展,了解)

3.2 折线图(plot)与基础绘图功能

3.2.1 折线图绘制与保存图片

3.2.2 完善原始折线图1(辅助显示层)

3.2.3 添加网格显示

3.2.4 添加描述信息

3.2.5 多次plot

3.2.6 设置图形风格

3.2.7 多个坐标系显示-plt.subplots(面向对象的画图方法)

3.2.8 折线图应用场景

3.3 常见图形绘制

3.3.1 常见图形种类及意义

3.3.2 散点图绘制

3.3.3 柱状图绘制

4.numpy

4.1 numpy的优势

4.1.1 numpy介绍

4.1.2 ndarray介绍 

4.1.3 ndarray与Python原生list运算效率对比

4.1.4 narray的优势

4.2 N维数组-ndarray

4.2.1 ndarray的属性

4.2.2 ndarray的形状

4.2.3 ndarray的类型

4.3 基本操作

4.3.1 生成数组的方法

4.3.2 数组的索引、切片

4.3.3 形状修改

4.3.4 类型修改

4.3.5 数组的去重

4.4 ndarray运算

4.4.1 逻辑运算

4.4.2 通用判断函数

4.4.3 np.where (三元运算符)

4.4.4 统计运算

4.5 数学:矩阵

4.5.1 矩阵和向量

4.5.2 加法和标量乘法

4.5.3 矩阵向量乘法

4.5.4 矩阵乘法

4.5.5 矩阵乘法的性质

4.5.6 逆、转置

4.6 数组间运算

4.6.1 数组和数的运算

4.6.2 数组与数组的运算:广播机制

4.6.3 矩阵乘法api

5.Pandas

5.1 Pandas介绍

5.1.1 Pandas介绍

5.1.2 为什么使用Pandas

5.1.3 案例

5.1.4 DataFrame

5.2 基本数据操作

5.2.1 索引操作

5.2.2 赋值操作

5.2.3 排序

5.3 DataFrame运算

5.3.1 算术运算

5.3.2 逻辑运算

5.3.3 统计运算

5.3.4 累计统计函数

5.3.5 自定义函数

5.4 Pandas画图

5.5 文件读取与存储

5.5.1 CSV

5.5.2 HDF5

5.5.3 JSON

5.5.4 拓展

5.6 高级处理-缺失值处理

5.6.1 如何处理nan

5.6.2 不是缺失值nan,有默认标记的

5.7 高级处理-数据离散化

5.7.1 为什么要离散化

5.7.2 什么是数据离散化

5.7.3 数据分组操作

5.7.4 分组数据变成one-hot编码

5.8 高级处理-数据合并

5.8.1 pd.concat实现数据合并

5.8.2 pd.merge实现数据合并

5.9 高级处理-交叉表与透视表

5.9.1 交叉表与透视表什么作用

5.9.2 使用crosstab(交叉表)实现上图

5.9.3案例-探究股票和星期几之间的关系

5.9.4 使用pivot_table(透视表)实现

5.10 高级处理-分组与聚合

5.10.1 什么分组和聚合

5.10.2 分组API

5.10.3 星巴克零售店铺数据


1.机器学习概述

 机器学习之基础知识(全),机器学习基础知识的全面解析 第1张

1.1 人工智能概述

机器学习之基础知识(全),机器学习基础知识的全面解析 第2张

机器学习之基础知识(全),机器学习基础知识的全面解析 第3张

1.1.1 人工智能使用场景

机器学习之基础知识(全),机器学习基础知识的全面解析 第4张

1.1.2 人工智能小案例

机器学习之基础知识(全),机器学习基础知识的全面解析 第5张

https://quickdraw.withgoogle.com机器学习之基础知识(全),机器学习基础知识的全面解析 第6张

https://pjreddie.com/darknet/yolo/

机器学习之基础知识(全),机器学习基础知识的全面解析 第7张

https://deepdreamgenerator.com/

1.2 人工智能发展历程

机器学习之基础知识(全),机器学习基础知识的全面解析 第8张

机器学习之基础知识(全),机器学习基础知识的全面解析 第9张

                机器学习之基础知识(全),机器学习基础知识的全面解析 第10张 

1.2.1 图灵测试

机器学习之基础知识(全),机器学习基础知识的全面解析 第11张

机器学习之基础知识(全),机器学习基础知识的全面解析 第12张

1.2.2 发展历程

机器学习之基础知识(全),机器学习基础知识的全面解析 第13张

机器学习之基础知识(全),机器学习基础知识的全面解析 第14张

1.2.3 小结

机器学习之基础知识(全),机器学习基础知识的全面解析 第15张

1.3 人工智能主要分支

1.3.1 人工智能、机器学习和深度学习

机器学习之基础知识(全),机器学习基础知识的全面解析 第16张

1.3.2 主要分支介绍

机器学习之基础知识(全),机器学习基础知识的全面解析 第17张

机器学习之基础知识(全),机器学习基础知识的全面解析 第18张

                 机器学习之基础知识(全),机器学习基础知识的全面解析 第19张

机器学习之基础知识(全),机器学习基础知识的全面解析 第20张

机器学习之基础知识(全),机器学习基础知识的全面解析 第21张

机器学习之基础知识(全),机器学习基础知识的全面解析 第22张机器学习之基础知识(全),机器学习基础知识的全面解析 第23张

1.3.3 人工智能发展必备三要素

机器学习之基础知识(全),机器学习基础知识的全面解析 第24张

1.3.4 拓展:GPU和CPU对比

CPU擅长IO处理,GPU擅长计算。

机器学习之基础知识(全),机器学习基础知识的全面解析 第25张

机器学习之基础知识(全),机器学习基础知识的全面解析 第26张

机器学习之基础知识(全),机器学习基础知识的全面解析 第27张

机器学习之基础知识(全),机器学习基础知识的全面解析 第28张

1.4 机器学习工作流程

机器学习之基础知识(全),机器学习基础知识的全面解析 第29张

机器学习之基础知识(全),机器学习基础知识的全面解析 第30张

1.4.1 什么是机器学习

机器学习之基础知识(全),机器学习基础知识的全面解析 第31张

1.4.2 机器学习工作流程

机器学习之基础知识(全),机器学习基础知识的全面解析 第32张

机器学习之基础知识(全),机器学习基础知识的全面解析 第33张

机器学习之基础知识(全),机器学习基础知识的全面解析 第34张

1.4.3 获取到的数据集介绍

机器学习之基础知识(全),机器学习基础知识的全面解析 第35张

机器学习之基础知识(全),机器学习基础知识的全面解析 第36张

机器学习之基础知识(全),机器学习基础知识的全面解析 第37张

机器学习之基础知识(全),机器学习基础知识的全面解析 第38张

        ​​​​​​机器学习之基础知识(全),机器学习基础知识的全面解析 第39张 

1.4.4 数据基本处理

即对数进行缺失值、去除异常值等处理。

1.4.5 特征工程

(1)什么是特征工程

机器学习之基础知识(全),机器学习基础知识的全面解析 第40张

(2)为什么需要特征工程(Feature Engineering)

机器学习之基础知识(全),机器学习基础知识的全面解析 第41张

(3) 特征工程包括内容

  • 特征提取
  • 特征预处理
  • 特征降维

     特征提取:

    机器学习之基础知识(全),机器学习基础知识的全面解析 第42张

    特征预处理:

    机器学习之基础知识(全),机器学习基础知识的全面解析 第43张

    特征降维:

    机器学习之基础知识(全),机器学习基础知识的全面解析 第44张

    1.4.6 机器学习和模型评估概念

    机器学习:选择合适的算法对模型进行训练。

    模型评估:对训练好的模型进行评估。

    1.5 机器学习算法分类

    机器学习之基础知识(全),机器学习基础知识的全面解析 第45张

    机器学习之基础知识(全),机器学习基础知识的全面解析 第46张

    1.5.1 监督学习

    定义: 输入数据是由输入特征值和目标值所组成。

            -函数的输出可以每一个连续的值(称为回归);

            -或是输出是有限个离散值(称作分类)。

    (1)回归问题 

    例如︰预测房价,根据样本集拟合出一条连续曲线。

    机器学习之基础知识(全),机器学习基础知识的全面解析 第47张

    (2)分类问题

    例如:根据肿瘤特征判断良性还是恶性,得到的是结果是“良性"或者“恶性”,是离散的。

    机器学习之基础知识(全),机器学习基础知识的全面解析 第48张

    1.5.2 无监督学习

    定义:输入数据是由输入特征值组成。

            输入数据没有被标记,也没有确定的结果。样本数据类别未知,需要根据样本间的相似性对样本集进行分类(聚类,clustering)试图使类内差距最小化,类间差距最大化。

    举例:

    机器学习之基础知识(全),机器学习基础知识的全面解析 第49张

    机器学习之基础知识(全),机器学习基础知识的全面解析 第50张

    1.5.3 半监督学习

    定义:即训练集同时包含有标记样本数据和未标记样本数据。
    举例:

    机器学习之基础知识(全),机器学习基础知识的全面解析 第51张机器学习之基础知识(全),机器学习基础知识的全面解析 第52张

    1.5.4 强化学习

    强化学习:实质是,make decisions问题,即自动进行决策,并且可以做连续决策。

    强化学习的目标:就是获得最多的累计奖励。
    举例:

    机器学习之基础知识(全),机器学习基础知识的全面解析 第53张

    监督学习与强化学习的对比:

    机器学习之基础知识(全),机器学习基础知识的全面解析 第54张

    1.5.5 小结

    机器学习之基础知识(全),机器学习基础知识的全面解析 第55张

    1.6 模型评估

    机器学习之基础知识(全),机器学习基础知识的全面解析 第56张

            模型评估是模型开发过程不可或缺的一部分。它有助于发现表达数据的最佳模型和所选模型将来工作的性能如何。按照数据集的目标值不同,可以把模型评估分为分类模型评估和回归模型评估。 

    1.6.1 分类模型评估

    • 准确率:预测正确的数占样本总数的比例。
    • 精确率:正确预测为正占全部预测为正的比例。
    • 召回率:正确预测为正占全部正样本的比例。
    • F1-score:主要用于评估模型的稳健性。
    • AUC指标:主要用于评估样本不均衡的情况。

      1.6.2 回归模型评估

      机器学习之基础知识(全),机器学习基础知识的全面解析 第57张机器学习之基础知识(全),机器学习基础知识的全面解析 第58张

      机器学习之基础知识(全),机器学习基础知识的全面解析 第59张

      机器学习之基础知识(全),机器学习基础知识的全面解析 第60张

      机器学习之基础知识(全),机器学习基础知识的全面解析 第61张

      1.6.3 拟合

      模型评估用于评价训练好的的模型的表现效果,其表现效果大致可以分为两类:过拟合、欠拟合。

      在训练过程中,你可能会遇到如下问题:

              训练数据训练的很好啊,误差也不大,为什么在测试集上面有问题呢?当算法在某个数据集当中出现这种情况,可能就出现了拟合问题。

      (1)欠拟合 

      机器学习之基础知识(全),机器学习基础知识的全面解析 第62张

      (2)过拟合

      过拟合((over-fitting)∶所建的机器学习模型或者是深度学习模型在训练样本中表现得过于优越,导致在验证数据集以及测试数据集中表现不佳。

      机器学习之基础知识(全),机器学习基础知识的全面解析 第63张

      1.7 Azure平台简介

      机器学习之基础知识(全),机器学习基础知识的全面解析 第64张

      Azure Machine Learning (简称"“AML")是微软在其公有云Azure上推出的基于Web使用的一项机器学习服务,机器学习属人工智能的一个分支,它技术借助算法让电脑对大量流动数据集进行识别。这种方式能够通过历史数据来预测未来事件和行为,其实现方式明显优于传统的离业智能形式。


      微软的目标:是简化使用机器学习的过程,以便于开发人员、业务分析师和数据科学家进行广泛、便捷地应用。


      这款服务的目的:在于“将机器学习动力与云计算的简单性相结合”。

      AML目前在微软的Global Azure云服务平台提供服务,用户可以通过站点: https://studio.azureml.net/申请免费试用。

      UCI机器学习数据库的网址:http://archive.ics.uci.edu/ml/

       

      1.8 深度学习简介【了解】

      机器学习之基础知识(全),机器学习基础知识的全面解析 第65张

      1.8.1 深度学习--神经网络简介

      机器学习之基础知识(全),机器学习基础知识的全面解析 第66张

      深度学习演示链接:http://playground.tensorflow.org

      机器学习之基础知识(全),机器学习基础知识的全面解析 第67张

      1.8.2 深度学习各层负责的内容

      机器学习之基础知识(全),机器学习基础知识的全面解析 第68张

      机器学习之基础知识(全),机器学习基础知识的全面解析 第69张

      机器学习之基础知识(全),机器学习基础知识的全面解析 第70张

      机器学习之基础知识(全),机器学习基础知识的全面解析 第71张

      机器学习之基础知识(全),机器学习基础知识的全面解析 第72张

      增加层数:通过更抽象的概念识别物体,器官层,分子层,原子层。

      增加结点数:增加同一层物质的种类。

      机器学习之基础知识(全),机器学习基础知识的全面解析 第73张

      2.机器学习基础环境安装与使用

      机器学习之基础知识(全),机器学习基础知识的全面解析 第74张

      机器学习之基础知识(全),机器学习基础知识的全面解析 第75张

      2.1 库的安装 

      整个机器学习基础阶段会用到Matplotlib、Numpy、Pandas等库
      注意:

              每个包安装的过程中,尽量指定稳定版本进行安装。

      2.2 Jupyter Notebook的使用

      机器学习之基础知识(全),机器学习基础知识的全面解析 第76张

      2.2.1 Jupyter Notebook介绍

      机器学习之基础知识(全),机器学习基础知识的全面解析 第77张

      Jupyter项目旨在开发跨几十种编程语言的开源软件,开放标准和用于交互式计算的服务。 

      2.2.2 为什么使用Jupyter Notebook

      机器学习之基础知识(全),机器学习基础知识的全面解析 第78张

      机器学习之基础知识(全),机器学习基础知识的全面解析 第79张

      机器学习之基础知识(全),机器学习基础知识的全面解析 第80张

      总结:Jupyter Notebook相比 Pycharm在画图和数据展示方面更有优势。

      2.2.3 简单操作介绍

      在cmd中输入jupyter notebook就可以打开。

      机器学习之基础知识(全),机器学习基础知识的全面解析 第81张

      机器学习之基础知识(全),机器学习基础知识的全面解析 第82张

      机器学习之基础知识(全),机器学习基础知识的全面解析 第83张
      机器学习之基础知识(全),机器学习基础知识的全面解析 第84张

      机器学习之基础知识(全),机器学习基础知识的全面解析 第85张

      2.2.4 markdown功能

      esc + m 

      机器学习之基础知识(全),机器学习基础知识的全面解析 第86张

      3.Matplotlib详讲

      机器学习之基础知识(全),机器学习基础知识的全面解析 第87张

      3.1 Matplotlib之HelloWorld

      3.1.1 什么是Matplotlib

      • 是专门用于开发2D图表(包括3D图表)
      • 使用起来及其简单
      • 以渐进、交互式方式实现数据可视化

        3.1.2 为什么要学 Matplotlib

                可视化是在整个数据挖掘的关键辅助工具,可以清晰的理解数据,从而调整我们的分析方法。

        • 能将数据进行可视化,更直观的呈现
        • 使数据更加客观、更具说服力

          例如下面两个图为数字展示和图形展示:

          机器学习之基础知识(全),机器学习基础知识的全面解析 第88张

          3.1.3 实现一个简单的Matplotlib画图

          import matplotlib.pyplot as plt
          # 1.创建画布
          plt.figure(figsize=(20,8),dpi=100)
          #2.绘制图像
          x=[1,2,3]
          y=[4,5,6]
          plt.plot(x,y)
          #3.显示图像
          plt.show()

          运行结果:
          机器学习之基础知识(全),机器学习基础知识的全面解析 第89张

          3.1.4 认识Matplotlib图像结构(拓展,了解)

          机器学习之基础知识(全),机器学习基础知识的全面解析 第90张

          3.1.5 Matplotlib三层结构(拓展,了解)

          (1)容器层

          容器层主要由Canvas、Figure、Axes组成。


          Canvas是位于最底层的系统层,在绘图的过程中充当画板的角色,即放置画布(Figure)的工具。
          Figure是Canvas上方的第一层,也是需要用户来操作的应用层的第一层,在绘图的过程中充当画布的角色。
          Axes是应用层的第二层,在绘图的过程中相当于画布上的绘图区的角色。

          • Figure:指整个图形(可以通过plt.figure()设置画布的大小和分辨率等)
          • Axes(坐标系):数据的绘图区域
          • Axis(坐标轴):坐标系中的一条轴,包含大小限制、刻度和刻度标签

            特点为∶

            • 一个figure(图像)可以包含多个axes(坐标系/绘图区),但是一个axes只能属于一个figure。
            • 一个axes(坐标系/绘图区)可以包含多个axis(坐标轴),包含两个即为2d坐标系,3个即为3d坐标系。

              机器学习之基础知识(全),机器学习基础知识的全面解析 第91张

              (2)辅助显示层

              辅助显示层为Axes(绘图区)内的除了根据数据绘制出的图像以外的内容,主要包括Axes外观(facecolor)、边框线(spines)、坐标轴(axis)、坐标轴名称(axis label)、坐标轴刻度(tick)、坐标轴刻度标签(tick label)、网格线(grid)、图例(legend)、标题(title)等内容。

              该层的设置可使图像显示更加直观更加容易被用户理解,但又不会对图像产生实质的影响。

              (3)图像层 

              图像层指Axes内通过plot、scatter、bar、histogram、pie等函数根据数据绘制出的图像。

              总结:

              • Canvas(画板)位于最底层,用户一般接触不到
              • Figure (画布)建立在Canvas之上
              • Axes(绘图区)建立在Figure之上
              • 坐标轴(axis)、图例(legend)等辅助显示层以及图像层都是建立在Axes之上

                3.2 折线图(plot)与基础绘图功能

                机器学习之基础知识(全),机器学习基础知识的全面解析 第92张

                机器学习之基础知识(全),机器学习基础知识的全面解析 第93张

                3.2.1 折线图绘制与保存图片

                为了更好地理解所有基础绘图功能,我们通过天气温度变化的绘图来融合所有的基础API使用。

                (1)matplotlib.pyplot模块

                matplotlib.pytplot包含了一系列类似于matlab的画图函数。它的函数作用于当前图形(figure)的当前坐标系。

                import matplotlib.pyplot as plt

                (2)折线图绘制与显示

                展现上海一周的天气,比如从星期一到星期日的天气温度如下:

                import matplotlib.pyplot as plt
                #1.创建画布
                plt.figure(figsize=(10,10))
                #2.绘制折线图(图像层)
                plt.plot([1,2,3,4,5,6,7],[17,17,18,15,11,11,13])
                #3.显示图像
                plt.show()

                运行结果:

                机器学习之基础知识(全),机器学习基础知识的全面解析 第94张

                (3)设置画布属性与图片保存

                plt.figure(figsize=(),dpi=)

                        figsize:指定图的长度

                        dpi:图像的清晰度

                plt.savefig(path)

                注意:plt.show()会释放figure资源,如果在显示图像之后保存图片将只能保存空图片。所以,图像保存一定要放到show前面。

                3.2.2 完善原始折线图1(辅助显示层)

                案例:显示温度变化状况。
                需求:画出某城市11点到12点1小时内每分钟的温度变化折线图,温度范围在15度~18度。

                #画出温度变化图
                import random
                import matplotlib.pyplot as plt
                #0.准备x、y坐标的数据
                x=range(60)
                y_shanghai=[random.uniform(10,15) for i in x]
                #1.创建画布
                plt.figure(figsize=(20,8),dpi=200)
                #2.绘制折线图
                plt.plot(x,y_shanghai)
                #2.1 添加x、y轴刻度
                y_ticks=range(40)
                plt.yticks(y_ticks[::5])
                x_ticks_label=['11点{}分'.format(i) for i in x]
                plt.xticks(x[::5],x_ticks_label[::5])
                #plt.xticks(x_ticks_label[::5])#报错   ==>  必须最开始传递进去的是数字
                #3.显示图像
                plt.show()

                运行结果:

                机器学习之基础知识(全),机器学习基础知识的全面解析 第95张

                中文显示问题的解决: 

                机器学习之基础知识(全),机器学习基础知识的全面解析 第96张

                 SimHei字体下载路径:https://us-logger1.oss-cn-beijing.aliyuncs.com/SimHei.ttf

                3.2.3 添加网格显示

                为了更加清楚地观察图形对应的值:plt.grid(True,linestyle='--',alpha= 0.5)

                        参数:

                                linestyle   --绘制网格的方式

                                alpha       --透明度

                3.2.4 添加描述信息

                添加x轴、y轴描述信息及标题。

                plt.xlabel('时间',fontsize=20)

                plt.ylabel('温度',fontsize=20)

                plt.title('xxxxx',fontsize=20)

                3.2.5 多次plot

                需求:添加一个城市的温度变化。

                        收集到北京当天温度变化情况,温度在1度到3度。怎么去添加另一个在同一坐标系当中的不同图形,其实很简单只需要再次plot即可,但是需要区分线条,如下:

                y_beijing=[random.uniform(1,3) for i in x]
                plt.plot(x,y_beijing,color='b',linestyle='-.',label='北京')
                #显示图例
                plt.legend(loc='best')

                3.2.6 设置图形风格

                机器学习之基础知识(全),机器学习基础知识的全面解析 第97张

                显示图例:plt.legend(loc='best')

                注意:如果只在plt.plot()中设置label还不能最终显示出图例,还需要通过plt.legend()将图例显示出来。

                机器学习之基础知识(全),机器学习基础知识的全面解析 第98张

                3.2.7 多个坐标系显示-plt.subplots(面向对象的画图方法)

                matplotlib.pyplot.subplots(nrows=1, ncols=1,**fig_kw)创建一个带有多个axes(坐标系/绘图区)的图。
                机器学习之基础知识(全),机器学习基础知识的全面解析 第99张

                注意:plt.函数名()相当于面向过程的画图方法,axes.set_方法名()相当于面向对象的画图方法。

                #画出温度变化图
                import random
                import matplotlib.pyplot as plt
                #0.准备x、y坐标的数据
                x=range(60)
                y_shanghai=[random.uniform(15,18) for i in x]
                y_beijing=[random.uniform(1,14) for i in x]
                #1.创建画布
                fig,axes=plt.subplots(nrows=1,ncols=2,figsize=(20,8),dpi=100)
                #2.绘制折线图
                axes[0].plot(x,y_shanghai,color='r',linestyle='--',label='上海')
                axes[1].plot(x,y_beijing,color='g',linestyle='-.',label='北京')
                #2.1 添加x、y轴刻度
                x_ticks_label=['11点{}分'.format(i) for i in x]
                y_ticks=range(40)
                axes[0].set_xticks(x[::5])
                axes[0].set_yticks(y_ticks[::5])
                axes[0].set_xticklabels(x_ticks_label[::5])
                axes[1].set_xticks(x[::5])
                axes[1].set_yticks(y_ticks[::5])
                axes[1].set_xticklabels(x_ticks_label[::5])
                #2.2 添加网格
                axes[0].grid(True,linestyle='--',alpha=1)
                axes[1].grid(True,linestyle='--',alpha=1)
                #2.3 添加描述
                axes[0].set_xlabel('时间',fontsize=25)
                axes[0].set_ylabel('温度',fontsize=25)
                axes[0].set_title('上海',fontsize=25)
                axes[1].set_xlabel('时间',fontsize=25)
                axes[1].set_ylabel('温度',fontsize=25)
                axes[1].set_title('北京',fontsize=25)
                #2.4显示图例
                axes[0].legend(loc='best')
                axes[1].legend(loc='best')
                #3.显示图像
                plt.show()

                运行效果:
                机器学习之基础知识(全),机器学习基础知识的全面解析 第100张

                3.2.8 折线图应用场景

                • 呈现公司产品(不同区域)每天活跃用户数
                • 呈现app每天下载数量
                • 呈现产品新功能上线后,用户点击次数随时间的变化
                • 拓展:画各种数学函数图像

                  注意:plt.plot()除了可以画折线图,也可以用于画各种数学函数图像。

                  import random
                  import matplotlib as mpl
                  import matplotlib.pyplot as plt
                  import numpy as np
                  mpl.rcParams['axes.unicode_minus']=False #解决负号显示问题
                  #0.准备数据
                  x=np.linspace(-10,10,1000)#[-10,10]1000个数据
                  y=np.sin(x)
                  #1.创建画布
                  plt.figure(figsize=(20,8),dpi=100)
                  #2.绘制函数图像
                  plt.plot(x,y)
                  #2.1显示网格
                  plt.grid()
                  #3.显示图像
                  plt.show()
                  

                  运行结果:

                  机器学习之基础知识(全),机器学习基础知识的全面解析 第101张

                  3.3 常见图形绘制

                  机器学习之基础知识(全),机器学习基础知识的全面解析 第102张

                  机器学习之基础知识(全),机器学习基础知识的全面解析 第103张

                  https://matplotlib.org/index.html

                  机器学习之基础知识(全),机器学习基础知识的全面解析 第104张

                  3.3.1 常见图形种类及意义

                  Matplotlib能够绘制折线图、散点图、柱状图、直方图、饼图。

                  我们需要知道不同的统计图的意义,以此来决定选择哪种统计图来呈现我们的数据。

                  (1)折线图 

                  折线图:以折线的上升或下降来表示统计数量的增减变化的统计图。
                  特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)
                  api:plt.plot(x, y)

                  (2)散点图

                  散点图:用两组数据构成多个坐标点,考察坐标点的分布,判断两变量之间是否存在某种关联或总结坐标点的分布模式。
                  特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)。

                  api:plt.scatter(x, y)

                  (3)柱状图

                  柱状图:排列在工作表的列或行中的数据可以绘制到柱状图中。
                  特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计/对比)
                  api:plt.bar(x, width, align='center' , **kwargs)

                  机器学习之基础知识(全),机器学习基础知识的全面解析 第105张

                  (4)直方图

                  直方图:由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据范围,纵轴表示分布情况。
                  特点:绘制连续性的数据展示一组或者多组数据的分布状况(统计)
                  api:matplotlib.pyplot.hist(x, bins=None)

                  机器学习之基础知识(全),机器学习基础知识的全面解析 第106张

                  机器学习之基础知识(全),机器学习基础知识的全面解析 第107张

                  (5)饼图

                  饼图:用于表示不同分类的占比情况,通过弧度大小来对比各种分类。

                  特点:分类数据的占比情况(占比)
                  api:plt.pie(x, labels=,autopct=,colors)

                  机器学习之基础知识(全),机器学习基础知识的全面解析 第108张

                  机器学习之基础知识(全),机器学习基础知识的全面解析 第109张

                  3.3.2 散点图绘制

                  需求:探究房屋面积和房屋价格的关系。

                  import matplotlib.pyplot as plt
                  #房屋面积数据
                  x=[225.98,247.07,253.14,457.85,241.58,301.01,20.67,288.64,163.56,120.06,207.83,342.75,147.9,53.06,224.72,29.51,21.61,483.21,245.25,399.25,343.35]
                  #房屋价格数据
                  y=[196.63,203.88,210.75,372.74,202.41,247.61,24.9,239.34,140.32,104.15,176.84,288.23,128.79,49.64,191.74,33.1,30.74,400.02,205.35,330.64,283.45]
                  plt.figure(figsize=(20,8),dpi=100)
                  plt.scatter(x,y)
                  plt.show()

                  结果:
                  机器学习之基础知识(全),机器学习基础知识的全面解析 第110张

                  3.3.3 柱状图绘制

                  movie_name=['雷神3∶诸神黄昏','正义联盟','东方快车谋杀案','寻梦环游记','全球风暴','降魔传','追捕','七十七天','密战','狂兽','其它']
                  x=range(len(movie_name))
                  y=[73853,57767,22354,15969,14839,8725,8716,8318,7916,6764,52222]
                  plt.figure(figsize=(20,8),dpi=100)
                  plt.bar(x,y,width=0.5,color=['b','r','g','y','c','m','y','k','c','g','b'])
                  plt.xticks(x,movie_name,fontsize=15)
                  plt.grid()
                  plt.title('某月电影票房统计',fontsize=20)
                  plt.show()

                  结果:

                  机器学习之基础知识(全),机器学习基础知识的全面解析 第111张

                  4.numpy

                  机器学习之基础知识(全),机器学习基础知识的全面解析 第112张

                  4.1 numpy的优势

                  机器学习之基础知识(全),机器学习基础知识的全面解析 第113张

                  机器学习之基础知识(全),机器学习基础知识的全面解析 第114张  

                  4.1.1 numpy介绍

                  • Numpy(Numerical Python)是一个开源的Python科学计算库,用于快速处理任意维度的数组
                  • Numpy支持常见的数组和距阵操作。对于同样的数值计算任务,使用Numpy比直接使用Python要简洁的多。
                  • Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。

                    4.1.2 ndarray介绍 

                    NumPy提供了一个N维数组类型ndarray,它描述了相同类型的“items”的集合。

                    机器学习之基础知识(全),机器学习基础知识的全面解析 第115张

                    4.1.3 ndarray与Python原生list运算效率对比

                    使用Python列表可以存储一维数组,通过列表的嵌套可以实现多维数组,那么为什么还需要使用Numpy的ndarray呢? 

                    在这里我们通过一段代码运行来体会到ndarray的好处:

                    import random,time
                    import numpy as np
                    a=[]
                    for i in range(10000):
                        a.append(random.random())
                    %time sum1=sum(a)
                    b=np.array(a)
                    %time sum2=np.sum(b)

                    机器学习之基础知识(全),机器学习基础知识的全面解析 第116张

                            从中我们看到ndarray的计算速度要快很多,节约了时间。

                            机器学习的最大特点就是大量的数据运算,那么如果没有一个快速的解决方案,那可能现在python也在机器学习领域达不到好的效果。

                    4.1.4 narray的优势

                    (1)内存块风格

                    ndarray到底跟原生python列表有什么不同呢,请看一张图:

                    机器学习之基础知识(全),机器学习基础知识的全面解析 第117张

                            从图中我们可以看出ndarray在存储数据的时候,数据与数据的地址都是连续的,这样就给使得批量操作数组元素时速度更快。

                            这是因为ndarray中的所有元素的类型都是相同的,而Python列表中的元素类型是任意的,所以ndarray在存储元素时内存可以连续,而python原生list就只能通过寻址方式找到下一个元素,这虽然也导致了在通用性能方面Numpy的ndarray不及Python原生list,但在科学计算中,Numpy的ndarray就可以省掉很多循环语句,代码使用方面比Python原生list简单的多。 

                    (2)ndarray支持并行化运算(向量化运算)

                    (3)效率远高于纯Python代码

                    Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,所以,其效率远高于纯Python代码。

                    4.2 N维数组-ndarray

                    机器学习之基础知识(全),机器学习基础知识的全面解析 第118张

                    4.2.1 ndarray的属性

                    数组属性反映了数组本身固有的信息。

                    机器学习之基础知识(全),机器学习基础知识的全面解析 第119张

                    4.2.2 ndarray的形状

                    机器学习之基础知识(全),机器学习基础知识的全面解析 第120张

                    4.2.3 ndarray的类型

                    dtype是numpy.dtype类型,先看看对于数组来说都有哪些类型:

                    注意:若不指定,整数默认int64,小数默认float64。

                    机器学习之基础知识(全),机器学习基础知识的全面解析 第121张

                    机器学习之基础知识(全),机器学习基础知识的全面解析 第122张

                    机器学习之基础知识(全),机器学习基础知识的全面解析 第123张

                    4.3 基本操作

                    机器学习之基础知识(全),机器学习基础知识的全面解析 第124张

                    机器学习之基础知识(全),机器学习基础知识的全面解析 第125张

                    4.3.1 生成数组的方法

                    (1)生成0和1的数组 

                    机器学习之基础知识(全),机器学习基础知识的全面解析 第126张

                    机器学习之基础知识(全),机器学习基础知识的全面解析 第127张

                    (2)从现有数组生成

                    生成方式:array为深拷贝,互不影响;asarray是浅拷贝,指向同一空间区域。

                    机器学习之基础知识(全),机器学习基础知识的全面解析 第128张

                    机器学习之基础知识(全),机器学习基础知识的全面解析 第129张

                    机器学习之基础知识(全),机器学习基础知识的全面解析 第130张

                    (3)生成固定范围的数组

                    • 生成等间隔的序列:np.linspace (start, stop, num, endpoint)

                      机器学习之基础知识(全),机器学习基础知识的全面解析 第131张

                      机器学习之基础知识(全),机器学习基础知识的全面解析 第132张

                      • 其它的还有:

                                numpy.arange(start,stop, step, dtype)

                        机器学习之基础知识(全),机器学习基础知识的全面解析 第133张

                                numpy.logspace(start,stop, num)

                        机器学习之基础知识(全),机器学习基础知识的全面解析 第134张

                        (4)生成随机数组 

                        使用模块:np.random

                        均匀分布:

                        • np.random.rand(d0, d1, ... , dn)返回[0.0,1.0)内的一组均匀分布的数。

                          机器学习之基础知识(全),机器学习基础知识的全面解析 第135张

                          • np.random.uniform(low=0.0, high=1.0, size=None)
                            机器学习之基础知识(全),机器学习基础知识的全面解析 第136张
                            import matplotlib as mpl
                            import matplotlib.pyplot as plt
                            import numpy as np
                            mpl.rcParams['axes.unicode_minus']=False #解决负号显示问题
                            x1=np.random.uniform(-1,1,10000000)
                            plt.figure(figsize=(10,3),dpi=100)
                            plt.hist(x=x1,bins=1000)
                            plt.show()

                            运行结果:

                            机器学习之基础知识(全),机器学习基础知识的全面解析 第137张

                            • np.random.randint(low , high=None, size=None, dtype='I')

                              从一个均匀分布中随机采样,生成一个整数或N维整数数组,取数范围:若high不为None时,取[low,high)之间随机整数,否则取值[0,low)之间随机整数。

                              正态分布:

                              •  np.random.randn(d0, d1, ...,dn)

                                        功能:从标准态分布中返回一个或多个样本值。

                                • np.random.normal(loc=0.0, scale=1.0, size=None)
                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第138张
                                  x2=np.random.normal(1.75,1,100000000)
                                  plt.figure(figsize=(20,8),dpi=100)
                                  plt.hist(x2,1000)
                                  plt.show()

                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第139张

                                  • np.random.standard_normal(size=None)

                                    返回指定形状的标准正态分布的数组。

                                    案例:随机生成8只股票2周的交易日涨幅数据。机器学习之基础知识(全),机器学习基础知识的全面解析 第140张 

                                    stock_change = np.random.normal(0, 1,(8,10))

                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第141张

                                    4.3.2 数组的索引、切片

                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第142张

                                    一维、二维、三维的数组如何索引?

                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第143张

                                    4.3.3 形状修改

                                    • ndarray.reshape(shape[, order])

                                      返回一个新结果,原来结果不变。

                                      机器学习之基础知识(全),机器学习基础知识的全面解析 第144张

                                      • ndarray.resize(new_shape[, refcheck])

                                        修改原数组。

                                      • ndarray.T数组的转置

                                        将数组的行、列进行互换。

                                        4.3.4 类型修改

                                        • ndarray.astype(type)
                                          机器学习之基础知识(全),机器学习基础知识的全面解析 第145张
                                        • ndarray.tostring([order])或者ndarray.tobytes([order])
                                          机器学习之基础知识(全),机器学习基础知识的全面解析 第146张

                                          4.3.5 数组的去重

                                          • ndarray.unique
                                            机器学习之基础知识(全),机器学习基础知识的全面解析 第147张

                                            4.4 ndarray运算

                                            机器学习之基础知识(全),机器学习基础知识的全面解析 第148张

                                            4.4.1 逻辑运算

                                            机器学习之基础知识(全),机器学习基础知识的全面解析 第149张

                                            4.4.2 通用判断函数

                                            • np.arr()
                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第150张
                                            • np.any()
                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第151张

                                              4.4.3 np.where (三元运算符)

                                              通过使用np.where能够进行更加复杂的运算。

                                              • np.where()
                                                机器学习之基础知识(全),机器学习基础知识的全面解析 第152张
                                              • 复合逻辑需要结合np.logical_and和np.logical_or使用
                                                机器学习之基础知识(全),机器学习基础知识的全面解析 第153张

                                                4.4.4 统计运算

                                                在数据挖掘/机器学习领域,统计指标的值也是我们分析问题的一种方式。

                                                常用的指标如下:

                                                • min(a[, axis, out, keepdims])
                                                • max(a[, axis, out, keepdims])
                                                • median(a[, axis, out, overwrite_input,keepdims])   中位数
                                                • mean(a, axis, dtype, out, keepdims])           平均值
                                                • std(a[, axis, dtype, out, ddof, keepdims])    标准差
                                                • var(a[, axis, dtype, out, ddof, keepdims])    方差
                                                • np.argmax(a,axis=)       最大值下标
                                                • np.argmin(a,axis=)        最小值下标

                                                  进行统计的时候,axis 轴的取值并不一定,Numpy中不同的API轴的值都不一样,在这里,axis=0代表列,axis=1代表行去进行统计。

                                                  4.5 数学:矩阵

                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第154张

                                                  4.5.1 矩阵和向量

                                                  (1)矩阵

                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第155张

                                                  (2)向量

                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第156张

                                                  4.5.2 加法和标量乘法

                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第157张

                                                  4.5.3 矩阵向量乘法

                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第158张

                                                  4.5.4 矩阵乘法

                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第159张

                                                  4.5.5 矩阵乘法的性质

                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第160张

                                                  4.5.6 逆、转置

                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第161张

                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第162张

                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第163张

                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第164张

                                                  4.6 数组间运算

                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第165张

                                                  4.6.1 数组和数的运算

                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第166张

                                                  4.6.2 数组与数组的运算:广播机制

                                                          执行broadcast的前提在于,两个ndarray执行的是element-wise的运算,Broadcast机制的功能是为了方便不同形状的ndarray (numpy库的核心数据结构)进行数学运算。

                                                          当操作两个数组时,numpy会逐个比较它们的shape (构成的元组tuple),只有在下述情况下,两个数组才能够进行数组与数组的运算。

                                                  • 维度相等
                                                  • shape(其中相对应的一个地方为1)

                                                     机器学习之基础知识(全),机器学习基础知识的全面解析 第167张

                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第168张

                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第169张

                                                    4.6.3 矩阵乘法api

                                                    • np.matmul    矩阵乘法
                                                      机器学习之基础知识(全),机器学习基础知识的全面解析 第170张
                                                    • np.dot   点乘
                                                      机器学习之基础知识(全),机器学习基础知识的全面解析 第171张
                                                    • 注意:两者之间在进行矩阵相乘时候,没有区别;但是,dot支持矩阵和数字相乘。
                                                      机器学习之基础知识(全),机器学习基础知识的全面解析 第172张

                                                      5.Pandas

                                                      机器学习之基础知识(全),机器学习基础知识的全面解析 第173张

                                                      5.1 Pandas介绍

                                                      机器学习之基础知识(全),机器学习基础知识的全面解析 第174张

                                                      5.1.1 Pandas介绍

                                                      机器学习之基础知识(全),机器学习基础知识的全面解析 第175张

                                                      • 2008年WesMcKinney开发出的库
                                                      • 专门用于数据挖掘的开源python库
                                                      • 以Numpy为基础,借力Numpy模块在计算方面性能高的优势
                                                      • 基于matplotlib,能够简便的画图
                                                      • 独特的数据结构

                                                        5.1.2 为什么使用Pandas

                                                        Numpy已经能够帮助我们处理数据,能够结合matplotlib解决部分数据展示等问题,那么pandas学习的目的在什么地方呢?

                                                        • 便捷的数据处理能力
                                                        • 读取文件方便
                                                        • 封装了Matplotlib、Numpy的画图和计算

                                                          5.1.3 案例

                                                          机器学习之基础知识(全),机器学习基础知识的全面解析 第176张

                                                          机器学习之基础知识(全),机器学习基础知识的全面解析 第177张

                                                          机器学习之基础知识(全),机器学习基础知识的全面解析 第178张

                                                          机器学习之基础知识(全),机器学习基础知识的全面解析 第179张

                                                          机器学习之基础知识(全),机器学习基础知识的全面解析 第180张

                                                          5.1.4 DataFrame

                                                          (1)DataFrame结构

                                                          DataFrame对象既有行索引,又有列索引

                                                          • 行索引,表明不同行,横向索引,叫index,0轴,axis=0
                                                          • 列索引,表名不同列,纵向索引,叫columns,1轴,axis=1

                                                            机器学习之基础知识(全),机器学习基础知识的全面解析 第181张

                                                            (2)DataFrame属性

                                                            • 对象.shape
                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第182张
                                                            • 对象.index     DataFrame的行索引列表
                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第183张
                                                            • 对象.columns   DataFrame的列索引列表
                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第184张
                                                            • 对象.values      直接获取其中array的值
                                                            • 对象.T               转置
                                                            • 对象.head(5)    显示前5行的内容

                                                              如果不补充参数,默认5行。填入参数N则显示前N行

                                                            • 对象.tail(5)       显示后5行的内容

                                                              如果不补充参数,默认5行。填入参数N则显示后N行

                                                              (3)DataFrame索引的设置

                                                              1.修改行列索引值:
                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第185张

                                                              注意:以下修改方式是错误的

                                                                      机器学习之基础知识(全),机器学习基础知识的全面解析 第186张

                                                              2.重设索引:

                                                              • reset_index(drop=False)

                                                                -设置新的下标索引。

                                                                -drop:默认为False,不删除原来索引,如果为True,删除原来的索引值。
                                                                机器学习之基础知识(全),机器学习基础知识的全面解析 第187张
                                                                机器学习之基础知识(全),机器学习基础知识的全面解析 第188张

                                                              • set_index(keys, drop=True)

                                                                -keys:列索引名成或者列索引名称的列表。

                                                                -drop:boolean, default True。当做新的索引,删除原来的列。

                                                                3.设置新索引案例:

                                                                • 创建
                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第189张
                                                                • 以月份设置新的索引
                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第190张
                                                                • 设置多个索引,以年和月份        ==>   其实这就变成三维数组了
                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第191张
                                                                  注:通过刚才的设置,这样DataFrame就变成了一个具有Multilndex的DataFrame。

                                                                  5.2 基本数据操作

                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第192张

                                                                  为了更好的理解这些基本操作,我们将读取一个真实的股票数据。关于文件操作,后面在介绍,这里只先用一下API。

                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第193张

                                                                  5.2.1 索引操作

                                                                  Numpy当中我们已经讲过使用索引选取序列和切片选择,pandas也支持类似的操作,也可以直接使用列名、行名称,甚至组合使用。

                                                                  (1)直接使用行列索引(先列后行) 

                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第194张

                                                                  (2)结合loc或者iloc使用索引
                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第195张

                                                                  (3)使用ix组合索引

                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第196张

                                                                  5.2.2 赋值操作

                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第197张

                                                                  5.2.3 排序

                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第198张

                                                                  排序有两种形式,一种对于索引进行排序,一种对于内容进行排序

                                                                  • 使用df.sort_values(by=, ascending=)

                                                                    -单个键或者多个键进行排序,默认升序

                                                                    -ascending=False:降序

                                                                    -ascending=True:升序

                                                                    -注意:by这个参数可以接受多个值,优先按照第一个索引排序,如果相同,按照后面的
                                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第199张

                                                                  • 使用df.sort_index给索引进行排序

                                                                    这个股票的日期索引原来是从大到小,现在重新排序,从小到大:
                                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第200张

                                                                  • 使用series.sort_values(ascending=True)进行排序

                                                                    series排序时,只有一列,不需要参数:
                                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第201张

                                                                  • 使用series.sort_index()进行排序           与df一样
                                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第202张

                                                                    5.3 DataFrame运算

                                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第203张

                                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第204张 

                                                                    5.3.1 算术运算

                                                                    直接使用方法add,sub...也可以用符号+-...

                                                                    • add(other)
                                                                      机器学习之基础知识(全),机器学习基础知识的全面解析 第205张
                                                                    • sub(other)
                                                                      机器学习之基础知识(全),机器学习基础知识的全面解析 第206张

                                                                      5.3.2 逻辑运算

                                                                      (1)逻辑运算符号、|、&

                                                                      • 例如筛选p_change > 2的日期数据
                                                                        机器学习之基础知识(全),机器学习基础知识的全面解析 第207张
                                                                        机器学习之基础知识(全),机器学习基础知识的全面解析 第208张
                                                                      • 完成一个多个逻辑判断,筛选p_change > 2并且open > 15
                                                                        机器学习之基础知识(全),机器学习基础知识的全面解析 第209张

                                                                        (2)逻辑运算函数

                                                                        • query(expr)

                                                                          -expr:查询字符串
                                                                          机器学习之基础知识(全),机器学习基础知识的全面解析 第210张

                                                                        • isin(values)
                                                                          机器学习之基础知识(全),机器学习基础知识的全面解析 第211张

                                                                          5.3.3 统计运算

                                                                          (1)describe()

                                                                          机器学习之基础知识(全),机器学习基础知识的全面解析 第212张

                                                                          (2)统计函数

                                                                          Numpy当中已经详细介绍,在这里我们演示min(最小值), max(最大值), mean(平均值), median(中位数),var(方差), std(标准差),mode(众数)结果:

                                                                          机器学习之基础知识(全),机器学习基础知识的全面解析 第213张

                                                                          对于单个函数去进行统计的时候,坐标轴还是按照这些默认为“columns"(axis=0, default),如果要对行"index”需要指定(axis=1)。

                                                                          • max()、min()
                                                                            机器学习之基础知识(全),机器学习基础知识的全面解析 第214张
                                                                          • std()、var()
                                                                            机器学习之基础知识(全),机器学习基础知识的全面解析 第215张 
                                                                            机器学习之基础知识(全),机器学习基础知识的全面解析 第216张
                                                                          • median()
                                                                            机器学习之基础知识(全),机器学习基础知识的全面解析 第217张
                                                                            机器学习之基础知识(全),机器学习基础知识的全面解析 第218张
                                                                          • idxmax()、idxmin()  获取最大/小值的下标
                                                                            机器学习之基础知识(全),机器学习基础知识的全面解析 第219张
                                                                            机器学习之基础知识(全),机器学习基础知识的全面解析 第220张

                                                                            5.3.4 累计统计函数

                                                                            机器学习之基础知识(全),机器学习基础知识的全面解析 第221张

                                                                            以上这些函数可以对series和dataframe操作。

                                                                            5.3.5 自定义函数

                                                                            • apply(func, axis=0)

                                                                              func:自定义函数

                                                                              ​​​​​​​axis=0:默认是列,axis=1为行进行运算

                                                                              举例:​​​​​​​定义一个对列,最大值-最小值的函数

                                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第222张

                                                                              5.4 Pandas画图

                                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第223张

                                                                              pandas.DataFrame.plot

                                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第224张

                                                                              5.5 文件读取与存储

                                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第225张

                                                                              我们的数据大部分存在于文件当中,所以pandas会支持复杂的IO操作,pandas的API支持众多的文件格式,如CSV、SQL、XLS、JSON、HDF5。
                                                                              注:最常用的HDF5和CSV文件。

                                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第226张

                                                                              5.5.1 CSV

                                                                              (1)read_csv

                                                                              pandas.read_csv(filepath_or_buffer,sep =',' )

                                                                              • filepath_or_buffer:文件路径
                                                                              • usecols:指定读取的列名,列表形式

                                                                                机器学习之基础知识(全),机器学习基础知识的全面解析 第227张

                                                                                (2)to_csv

                                                                                机器学习之基础知识(全),机器学习基础知识的全面解析 第228张

                                                                                5.5.2 HDF5

                                                                                (1)read_hdf和to_hdf

                                                                                机器学习之基础知识(全),机器学习基础知识的全面解析 第229张

                                                                                机器学习之基础知识(全),机器学习基础知识的全面解析 第230张

                                                                                5.5.3 JSON

                                                                                JSON是我们常用的一种数据交换格式,前面在前后端的交互经常用到,也会在存储的时候选择这种格式。所以我们需要知道Pandas如何进行读取和存储JSON格式。

                                                                                (1)read_json

                                                                                机器学习之基础知识(全),机器学习基础知识的全面解析 第231张 

                                                                                机器学习之基础知识(全),机器学习基础知识的全面解析 第232张

                                                                                (2)to_json

                                                                                机器学习之基础知识(全),机器学习基础知识的全面解析 第233张

                                                                                5.5.4 拓展

                                                                                优先选择使用HDF5文件存储:

                                                                                • HDF5在存储的时候支持压缩,使用的方式是blosc,这个是速度最快的也是pandas默认支持的
                                                                                • 使用压缩可以提磁盘利用率,节省空间
                                                                                • HDF5还是跨平台的,可以轻松迁移到hadoop 上面

                                                                                  5.6 高级处理-缺失值处理

                                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第234张

                                                                                  5.6.1 如何处理nan

                                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第235张

                                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第236张

                                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第237张

                                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第238张 

                                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第239张 

                                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第240张

                                                                                  5.6.2 不是缺失值nan,有默认标记的

                                                                                  数据是这样的:

                                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第241张

                                                                                  处理思路分析:

                                                                                  • 1.先替换‘?'为np.nan

                                                                                    df.replace(to_replace=, value=)

                                                                                            -to_replace:替换前的值

                                                                                            -value:替换后的值

                                                                                  • 2.在进行缺失值的处理

                                                                                    5.7 高级处理-数据离散化

                                                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第242张 

                                                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第243张 

                                                                                    5.7.1 为什么要离散化

                                                                                    连续属性离散化的目的是为了简化数据结构,数据离散化技术可以用来减少给定连续属性值的个数。离散化方法经常作为数据挖掘的工具。

                                                                                    5.7.2 什么是数据离散化

                                                                                    连续属性的离散化就是在连续属性的值域上,将值域划分为若干个离散的区间,最后用不同的符号或整数值代表落在每个子区间中的属性值。

                                                                                    离散化有很多种方法,这使用一种最简单的方式去操作:

                                                                                    • 原始人的身高数据:165,174,160,180,159,163,192,184
                                                                                    • 假设按照身高分几个区间段:150~165,165~180,180~195

                                                                                      这样我们将数据分到了三个区间段,我可以对应的标记为矮、中、高三个类别,最终要处理成一个"哑变量"矩阵:
                                                                                      机器学习之基础知识(全),机器学习基础知识的全面解析 第244张

                                                                                      5.7.3 数据分组操作

                                                                                      使用的工具:

                                                                                      • pd.qcut(data, bins):

                                                                                        ​​​​​​​对数据进行分组将数据分组一般会与value_counts搭配使用,统计每组的个数

                                                                                      • series.value_counts():统计分组次数

                                                                                        ​​​​​​​机器学习之基础知识(全),机器学习基础知识的全面解析 第245张
                                                                                        机器学习之基础知识(全),机器学习基础知识的全面解析 第246张 

                                                                                        自定义区间分组:

                                                                                        • pd.cut(data, bins)

                                                                                           ​​​​​​​机器学习之基础知识(全),机器学习基础知识的全面解析 第247张
                                                                                          机器学习之基础知识(全),机器学习基础知识的全面解析 第248张

                                                                                          5.7.4 分组数据变成one-hot编码

                                                                                          把每个类别生成一个布尔列,这些列中只有一列可以为这个样本取值为1.其又被称为热编码。

                                                                                          别名:哑变量,热独编码

                                                                                          把下图中左边的表格转化为使用右边形式进行表示:
                                                                                          机器学习之基础知识(全),机器学习基础知识的全面解析 第249张

                                                                                          pandas.get_dummies(data, prefix=None)

                                                                                          • data:array-like, Series, or DataFrame
                                                                                          • prefix:分组名字

                                                                                            机器学习之基础知识(全),机器学习基础知识的全面解析 第250张

                                                                                            5.8 高级处理-数据合并

                                                                                            机器学习之基础知识(全),机器学习基础知识的全面解析 第251张

                                                                                            如果你的数据由多张表组成,那么有时候需要将不同的内容合并在一起分析。 

                                                                                            机器学习之基础知识(全),机器学习基础知识的全面解析 第252张 

                                                                                            5.8.1 pd.concat实现数据合并

                                                                                            pd.concat([data1, data2], axis=1)

                                                                                                    -按照行或列进行合并,axis=0为列索引,axis=1为行索引

                                                                                                    比如我们将刚才处理好的one-hot编码与原数据合并:

                                                                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第253张

                                                                                                     机器学习之基础知识(全),机器学习基础知识的全面解析 第254张

                                                                                            5.8.2 pd.merge实现数据合并

                                                                                            pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None)

                                                                                            • 可以指定按照两组数据的共同键值对合并或者左右各自
                                                                                            • left:A DataFrame object
                                                                                            • right:Another DataFrame object
                                                                                            • on:Columns (names) to join on. Must be found in both the left and right DataFrame objects.
                                                                                            • left_on=None, right_on=None:指定左右键
                                                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第255张

                                                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第256张 

                                                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第257张

                                                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第258张

                                                                                              5.9 高级处理-交叉表与透视表

                                                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第259张

                                                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第260张 

                                                                                              5.9.1 交叉表与透视表什么作用

                                                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第261张

                                                                                              机器学习之基础知识(全),机器学习基础知识的全面解析 第262张

                                                                                              5.9.2 使用crosstab(交叉表)实现上图

                                                                                              交叉表:交叉表用于计算一列数据对于另外一列数据的分组个数(寻找两个列之间的关系)

                                                                                              • pd.crosstab(value1, value2)
                                                                                              • DataFrame.pivot_table([], index=[])

                                                                                                5.9.3案例-探究股票和星期几之间的关系

                                                                                                机器学习之基础知识(全),机器学习基础知识的全面解析 第263张

                                                                                                机器学习之基础知识(全),机器学习基础知识的全面解析 第264张

                                                                                                机器学习之基础知识(全),机器学习基础知识的全面解析 第265张

                                                                                                机器学习之基础知识(全),机器学习基础知识的全面解析 第266张 

                                                                                                但是我们看到count只是每个星期日子的好坏天数,并没有得到比例,该怎么去做?

                                                                                                • 对于每个星期一等的总天数求和,运用除法运算求出比例。

                                                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第267张

                                                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第268张

                                                                                                  可视化: 

                                                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第269张 

                                                                                                  5.9.4 使用pivot_table(透视表)实现

                                                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第270张

                                                                                                  5.10 高级处理-分组与聚合

                                                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第271张

                                                                                                  分组与聚合通常是分析数据的一种方式,通常与一些统计函数一起使用,查看数据的分组情况。

                                                                                                  想一想其实刚才的交叉表与透视表也有分组的功能,所以算是分组的一种形式,只不过他们主要是计算次数或者计算比例!

                                                                                                  5.10.1 什么分组和聚合

                                                                                                  机器学习之基础知识(全),机器学习基础知识的全面解析 第272张

                                                                                                  分组不聚合没有任何意义,所以一般分组和聚合是分不开的。 

                                                                                                  5.10.2 分组API

                                                                                                  DataFrame.groupby(key, as_index=False)

                                                                                                  • key:分的列数据,可以多个

                                                                                                    案例:不同颜色的不同笔的价格数据

                                                                                                            -进行分组,对颜色分组,price进行聚合
                                                                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第273张

                                                                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第274张

                                                                                                    5.10.3 星巴克零售店铺数据

                                                                                                    ​​​​​​​机器学习之基础知识(全),机器学习基础知识的全面解析 第275张

                                                                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第276张

                                                                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第277张

                                                                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第278张​​​​​​​

                                                                                                    根据多组分组:假设我们加入省市一起进行分组。

                                                                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第279张

                                                                                                    机器学习之基础知识(全),机器学习基础知识的全面解析 第280张


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码