《Python数据科学手册》—学习笔记

本文全面介绍了数据科学的关键技术和工具,包括IPython、NumPy、Pandas、Matplotlib等,深入探讨了机器学习的基本原理和应用,涵盖从数据预处理到模型训练的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

前言

数据科学

数据科学维恩图
在这里插入图片描述
数据科学是一个跨学科的课题。数据科学综合了三个领域的能力:统计学家的能力—能够建立模型和聚合(数据量正在不断增大的)数据;计算机科学家的能力—能够设计并使用算法对数据进行高效存储、分析和可视化;领域专家的能力—在细分领域中经过专业训练,既可以提出正确的问题,又可以作为专业的解答。

IPython

IPython是用Python进行有效的交互式科学计算和数据密集型计算。IPython Notebook是Jupyter Notebook结构的特例,Jupyter Notebook不仅支持Python,还包括Julia、R和其他编程语言的Notebook。

使用IPython的两种方式

  • IPython Shell:命令行中输入ipython启动IPython解释器。
  • IPython notebook:Jupyter notebook是IPython shell基于浏览器的图像界面,提供了一个丰富的动态展示功能。尽管IPython notebook是通过Web浏览器窗口进行查看和编辑的,但是它必须与一个正在运行的Python进程连接才能执行代码。需要在命令行中输入jupyter notebook。

IPython的帮助和文档

  • 用符号?获取文档
  • 用符号??获取代码
  • 用Tab补全的方式探索模块

IPython中的快捷键

  • 导航快捷键
    -
  • 文本输入快捷键
    在这里插入图片描述
  • 命令历史快捷键
    在这里插入图片描述
  • 其他快捷键
    在这里插入图片描述

IPython 魔法命令

IPython在普通Python语法基础之上的增强功能,称为IPython魔法命令。

魔法命令有两种形式:

  • 行魔法(line magic),行魔法以单个%字符作为前缀,作用于单行输入。
  • 单元魔法(cell magic),单元魔法以两个%%作为前缀,作用于多行输入。

常用命令:

  • 粘贴代码块:%paste和%cpaste(解决包含符号的多行输入问题)

在这里插入图片描述
在这里插入图片描述

  • 执行外部代码:%run(运行后,代码中包含的所有函数都可以在IPython会话中使用)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 计算代码运行时间:%timeit
    • 单行
      在这里插入图片描述
    • 多行
      在这里插入图片描述
  • 魔法函数的帮助:?、%magic和%lsmagic

输入输出历史

  • IPython的输入输出对象
    在这里插入图片描述
  • 下划线快捷键和以前的输出
    在这里插入图片描述
  • 禁止输出
    在这里插入图片描述
  • 相关的魔法命令
    在这里插入图片描述

IPython和shell命令

IPython终端可以直接执行shell命令的语法。一行中任何在!后面的内容将不会通过Python内核运行,而是通过系统命令行运行。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

错误和调试

  • 控制异常:%xmode
  • 调试:当阅读轨迹追溯不足以解决问题时
    标准的 Python 交互式调试工具是 pdb,它是 Python 的调试器。这个调试器允许用户逐行运行代码,以便查看可能导致错误的原因。IPython 增强版本的调试器是 ipdb,它是 IPython专用的调试器。IPython 中最方便的调试界面可能就是 %debug 魔法命令了。
    在这里插入图片描述

代码的分析和计时

在这里插入图片描述

NumPy入门

有效的存储和操作数值数组是数据科学中绝对的基础过程。Python中用来处理这些数值数组的工具:NumPy包和Pandas包。

NumPy(Numerical Python的简称)提供了高效存储和操作密集数据缓存的接口。NumPy数组几乎是整个Python数据科学工具生态系统的核心。

Python中的数据类型

Python变量不仅是它们的值,还包括了关于值的类型的一些额外信息。

标准的Python实现是用C语言编写的。每一个Python对象都是一个聪明的伪C语言结构体,该结构体不仅包含其值,还有其他信息。

  • Python整型
    C语言整型本质上是对应某个内存位置的标签,里面存储的字节会编码成整型。而Python的整型其实是一个指针,指向包含这个Python对象所有信息的某个内存位置,其中包括可以转换成整型的字节。由于Python的整型结构体里面还包含了大量的额外信息,所以Python可以自由、动态的编码。但是Python类型中的这些额外信息也会成为负担,在多个对象组合的结构体中尤为明显。
    在这里插入图片描述
  • Python列表
    Python具有动态类型特性,所以可以创建一个异构的列表。
    在这里插入图片描述
    拥有灵活性是要付出代价的,为了获得这些灵活的类型,列表中的每一项必须包含各自的类型信息、引用计数和其他信息,每一项都是一个完整的Python对象。如果列表中的所有变量都是同一类型的,那么很多信息就会显得很多余,这时将数据存储在固定类型的数组中应该会更高效。动态类型的列表和固定类型的(NumPy式)数组间的区别如下所示:
    在这里插入图片描述
    在实现层面,数组基本上包含一个指向连续数据块的指针。另一方面,Python 列表包含一个指向指针块的指针,这其中的每一个指针对应一个完整的 Python 对象(如前面看到的Python 整型)。另外,列表的优势是灵活,因为每个列表元素是一个包含数据和类型信息的完整结构体,而且列表可以用任意类型的数据填充。固定类型的 NumPy 式数组缺乏这种灵活性,但是能更有效地存储和操作数据。
  • Python固定类型数组
    内置的数组(array)模块(在 Python 3.3 之后可用)可以用于创建统一类型的密集数组:
    在这里插入图片描述
    更实用的是 NumPy 包中的 ndarray 对象。Python 的数组对象提供了数组型数据的有效存储,而 NumPy 为该数据加上了高效的操作。
  • Python列表创建NumPy数组
    在这里插入图片描述
  • NumPy内置方法创建数组
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

NumPy数组基础

  • 数组的属性(确定数组的大小、形状、存储大小、数据类型)
    • ndim:数组的维度
    • shape:数组每个维度的大小
    • size:数组的总大小
    • dtype:数组的数据类型
    • itemsize:每个数组元素字节大小
    • nbytes:数组总字节大小(一般来说,可以认为nbytes跟itemsize和size的乘积大小相等。)
  • 数组的索引(获取和设置数组各个元素的值)
    在这里插入图片描述
  • 数组的切分(在大的数组中获取或设置更小的子数组)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 数组的变形(改变给定数组的形状)
    在这里插入图片描述
    在这里插入图片描述
  • 数组的拼接和分裂(将多个数组合并为一个,以及将一个数组分裂成多个)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

NumPy数组的计算:通用函数

NumPy提供了一个简单灵活的接口来优化数据数组的计算。NumPy数组计算有时非常快,有时非常慢。使NumPy变快的关键是利用向量化操作,通常在NumPy的通用函数(ufunc)中实现。

  • 缓慢的循环
    在这里插入图片描述
    事实上,这里的处理瓶颈并不是运算本身,而是 CPython 在每次循环时必须做数据类型的检查和函数的调度。
  • 通用函数介绍哦哦
    在这里插入图片描述
    NumPy 中的向量操作是通过通用函数实现的。通用函数的主要目的是对 NumPy 数组中的值执行更快的重复操作。
  • 探索NumPy的通用函数
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 高级的通用函数特性
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

聚合:最小值、最大值和其他值

当你面对大量的数据时,第一个步骤通常都是计算相关数据的概括统计值。最常用的概括统计值可能是均值和标准差,这两个值能让你分别概括出数据集中的“经典”值,但是其他一些形式的聚合也是非常有用的(如求和、乘积、中位数、最小值和最大值、分位数,等等)。

  • 数组值求和
    在这里插入图片描述
    在这里插入图片描述
  • 最小值和最大值
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

数组的计算:广播

另外一种向量化操作的方法是利用 NumPy 的广播功能。广播可以简单理解为用于不同大小数组的二进制通用函数(加、减、乘等)的一组规则。

  • 广播的介绍
    在这里插入图片描述
    在这里插入图片描述
    浅色的盒子表示广播的值。同样需要注意的是,这个额外的内存并没有在实际操作中进行分配,但是这样的想象方式更方便我们从概念上理解。
  • 广播的规则
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 广播的实际应用
    在这里插入图片描述
    在这里插入图片描述

比较、掩码和布尔逻辑

  • 和通用函数类似的比较操作
    在这里插入图片描述
  • 操作布尔数组
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 将不二数组作为掩码
    在这里插入图片描述

花哨的索引

利用简单的索引值(如 arr[0])、切片(如 arr[:5])和布尔掩码(如 arr[arr > 0])获得并修改部分数组。另外一种数组索引,也称作花哨的索引(fancy indexing)。花哨的索引和前面那些简单的索引非常类似,但是传递的是索引数组,而不是单个标量。花哨的索引让我们能够快速获得并修改复杂的数组值的子数据集。

  • 探索花哨的索引
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 组合索引
    在这里插入图片描述
  • 用花哨的索引修改值
    在这里插入图片描述
    在这里插入图片描述

数组的排序

  • NumPy中的快速排序
    在这里插入图片描述
    在这里插入图片描述
  • 部分排序:分隔
    在这里插入图片描述

结构化数据:NumPy的结构化数组

NumPy的结构化数组合记录数组,为复合的、异构的数据提供了有效的存储。虽然列举的模式对简单的操作有用,但是这些场景通常可以用Pandas的DataFrame来实现。
在这里插入图片描述
在这里插入图片描述

  • 生成结构化数组
    在这里插入图片描述
  • 更高级的复合类型
    在这里插入图片描述
  • 记录数组:结构化数组的扭转
    在这里插入图片描述

Pandas数据处理

Pandas是在NumPy的基础上建立的新程序库,提供了一种高效的DataFrame数据结构。DataFrame本质上是一种带行标签和列标签、支持相同类型和缺失值的多维数组。Pandas不仅为带各种标签的数据提供了便利的存储界面,还实现了许多强大的操作。

Pandas对象简介

从底层视角可以把Pandas对象看成增强版的NumPy结构化数组,行列都不再只是简单的整数索引,还可以带上标签。Pandas有三个基本数据结构:Series、DataFrame和Index。

  • Pandas的Series对象
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • Pandas的DataFrame对象
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • Pandas的Index对象
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

数据取值与选择

  • Series数据选择方法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • DataFrame数据选择方法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

Pandas数值运算方法

  • 通用函数:保留索引
    在这里插入图片描述
    在这里插入图片描述
  • 通用函数:索引对齐
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 通用函数:DataFrame和Series的运算
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

处理缺失值

  • 选择处理缺失值的方法
    在这里插入图片描述
  • Pandas缺失值
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 处理缺失值
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

层级索引

Pandas 提供了 Panel 和 Panel4D 对象解决三维数据与四维数据。而在实践中,更直观的形式是通过层级索引(hierarchical indexing,也被称为多级索引,multi-indexing)配合多个有不同等级(level)的一级索引一起使用,这样就可以将高维数
组转换成类似一维 Series 和二维 DataFrame 对象的形式。

  • 多级索引Series
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 多级索引的创建方法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 多级索引的取值与切片
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 多级索引行列转换
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 多级索引的数据累计方法
    在这里插入图片描述

合并数据集:Concat与Append操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

合并数据集:合并与连接

Pandas 的基本特性之一就是高性能的内存式数据连接(join)与合并(merge)操作。

  • 关系代数
    pd.merge() 实现的功能基于关系代数(relational algebra)的一部分。关系代数是处理关系型数据的通用理论,绝大部分数据库的可用操作都以此为理论基础。关系代数方法论的强大之处在于,它提出的若干简单操作规则经过组合就可以为任意数据集构建十分复杂的操作。借助在数据库或程序里已经高效实现的基本操作规则,你可以完成许多非常复杂的操作。Pandas 在 pd.merge() 函数与 Series 和 DataFrame 的 join() 方法里实现了这些基本操作规则。
  • 数据连接的类型
    pd.merge() 函数实现了三种数据连接的类型:一对一、多对一和多对多。这三种数据连接类型都通过 pd.merge() 接口进行调用,根据不同的数据连接需求进行不同的操作。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 设置数据合并的键
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 设置数据连接的集合操作规则
    在这里插入图片描述
    在这里插入图片描述
  • 重复列名:suffixes参数
    在这里插入图片描述

累计与分组

  • Pandas的简单累计功能
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • GroupBy:分割、应用和组合
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

数据透视表

GroupBy 抽象类是如何探索数据集内部的关联性。数据透视表(pivot table)是一种类似的操作方法,常见于 Excel 与类似的表格应用中。数据透视表将每一列数据作为输入,输出将数据不断细分成多个维度累计信息的二维数据表。数据透视表更像是一种多维的 GroupBy 累计操作。虽然也可以分割 - 应用 - 组合,但是分割与组合不是发生在一维索引上,而是在二维网格上(行列同时分组)。

向量化字符串操作

使用 Python 的一个优势就是字符串处理起来比较容易。在此基础上创建的 Pandas 同样提供了一系列向量化字符串操作(vectorized string operation),它们都是在处理(清洗)现实工作中的数据时不可或缺的功能。

  • Pandas 字符串操作简介
    在这里插入图片描述
    在这里插入图片描述
  • Pandas字符串方法列表
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

处理时间序列

在这里插入图片描述

  • Python的日期与时间工具
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • Pandas时间序列:用时间作索引
    Pandas 时间序列工具非常适合用来处理带时间戳的索引数据。
  • Pandas时间序列数据结构
    在这里插入图片描述
  • 时间频率与偏移量
    在这里插入图片描述
  • 重新取样、迁移和窗口
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • query()与eval()的设计动机:复合代数式
  • 用Pandas.eval()实现高性能运算
  • 用DataFrame.eval()实现列间运算
  • DataFrame.query()方法
  • 性能决定使用时机

高性能Pandas:eval()与query()

Matplotlib数据可视化

Matplotlib常用技巧

  • 导入Matplotlib
import matplotlib as mpl
import matplotlib.pyplot as plt
  • 设置绘图样式
plt.style.use('classic')
  • 显示图形
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 将图形保存为文件
    在这里插入图片描述

两种画图接口

  • MATLAB风格接口
In[9]: plt.figure() # 创建图形
       # 创建两个子图中的第一个,设置坐标轴
       plt.subplot(2, 1, 1) # (行、列、子图编号) 
       plt.plot(x, np.sin(x)) 
       # 创建两个子图中的第二个,设置坐标轴
       plt.subplot(2, 1, 2) 
       plt.plot(x, np.cos(x));

在这里插入图片描述

  • 面向对象接口
    在这里插入图片描述
In[10]: # 先创建图形网格
        # ax是一个包含两个Axes对象的数组
        fig, ax = plt.subplots(2) 
        # 在每个对象上调用plot()方法
        ax[0].plot(x, np.sin(x)) 
        ax[1].plot(x, np.cos(x));

简易线形图

在这里插入图片描述

  • 调整图形:线条的颜色与风格
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 调整图形:坐标轴上下限
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 设置图形标签
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

简易散点图

  • 用plt.plot画散点图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 用plt.scatter画散点图
    在这里插入图片描述
    在这里插入图片描述
  • plot与scatter:效率对比
    在这里插入图片描述

可视化异常处理

  • 基本误差线
x = np.linspace(0,10,50)
dy = 0.8
y = np.sin(x) + dy * np.random.randn(50)
plt.errorbar(x, y, yerr = dy, fmt='.k')
plt.errorbar(x,y,yerr=dy,fmt='o',color='black',ecolor='lightgray',elinewidth=3,capsize=0)

在这里插入图片描述
在这里插入图片描述

  • 连续误差
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

密度图与等高线图

在这里插入图片描述

频次直方图、数据区间划分和分布密度

  • 二维频次直方图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

配置图例

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 选择图例显示的元素
    在这里插入图片描述
    在这里插入图片描述
  • 在图例中显示不同尺寸的点
    在这里插入图片描述
  • 同时显示多个图例
    在这里插入图片描述

配置颜色条

在这里插入图片描述

  • 选择配色方案
    在这里插入图片描述
  • 颜色条刻度的限制与扩展功能的设置
    在这里插入图片描述
  • 离散型颜色条
    在这里插入图片描述

多子图

  • plt.axes:手动创建子图
    在这里插入图片描述
    在这里插入图片描述
  • plt.subplot:简易网格子图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • plt.subplots:用一行代码创建网格
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • plt.GridSpec:实现更复杂的排列方式
    在这里插入图片描述
    在这里插入图片描述

文字与注释

在这里插入图片描述
在这里插入图片描述

  • 坐标变换与文字位置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 箭头和注释
    在这里插入图片描述

自定义坐标轴刻度

  • 主刻度与次要刻度
    在这里插入图片描述
  • 隐藏刻度和标签
    在这里插入图片描述
  • 增减刻度数量
    在这里插入图片描述
  • 花哨的刻度格式
    在这里插入图片描述
    在这里插入图片描述
  • 格式生成器与定位器
    在这里插入图片描述
    在这里插入图片描述

Matplotlib自定义:配置文件与样式表

  • 手动配置图形
    在这里插入图片描述
    在这里插入图片描述
  • 修改默认配置:rcParams
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 样式表
    在这里插入图片描述

用Matplotlib画三维图

在这里插入图片描述
在这里插入图片描述

  • 三维数据点与线
    在这里插入图片描述
  • 三维等高线图
    在这里插入图片描述
    在这里插入图片描述
  • 线框图和曲面图
    在这里插入图片描述
    在这里插入图片描述
  • 曲面三角剖分
    在这里插入图片描述
    在这里插入图片描述

用Basemap可视化地理数据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 地图投影
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 画一个地图背景
    在这里插入图片描述
  • 在地图上画数据
    在这里插入图片描述

用Seaborn做数据可视化

Seaborn 在 Matplotlib 的基础上开发了一套 API,为默认的图形样式和颜色设置提供了理智的选择,为常用的统计图形定义了许多简单的高级函数,并与 Pandas DataFrame 的功能有机结合。

Seaborn 不仅有许多高级的画图功能,而且可以改写 Matplotlib 的默认参数,从而用简单的 Matplotlib 脚本获得更好的效果。可以用Seaborn 的 set() 方法设置样式。

Seaborn 的主要思想是用高级命令为统计数据探索和统计模型拟合创建各种图形。

  • 频次直方图、KDE和密度图
  • 矩阵图
  • 分面频次直方图
  • 因子图
  • 联合分布
  • 条形图

机器学习

什么是机器学习

虽然对机器学习的研究确实是源自人工智能领域,但是机器学习的方法却应用于
数据科学领域,因此我认为把机器学习看作是一种数学建模更合适。

机器学习的本质就是借助数学模型理解数据。当我们给模型装上可以适应观测数据的可调参数时,“学习”就开始了;此时的程序被认为具有从数据中“学习”的能力。一旦模型可以拟合旧的观测数据,那么它们就可以预测并解释新的观测数据。

  • 机器学习的分类
    -
  • 机器学习应用的定性示例
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 小结
    在这里插入图片描述
    在这里插入图片描述

Scikit-Learn简介

  • Scikit-Learn的数据表示
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • Scikit-Learn的评估器API
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

超参数与模型验证

有监督机器学习模型的基本步骤:

  • 选择模型

  • 选择模型超参数

  • 用模型拟合训练数据

  • 用模型预测新数据的标签
    前两步—模型选择和超参数选择—可能是有效使用各种机器学习工具和技术的最重要的阶段。为了做出正确的选择,需要一种方式来验证选中的模型和超参数是否可以很好的拟合数据。

  • 什么是模型验证
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 选择最优模型
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 学习曲线
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 验证实践:网格搜索
    在这里插入图片描述

特征工程

在这里插入图片描述

  • 分类特征
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 文本特征
    在这里插入图片描述
    在这里插入图片描述
  • 图像特征
    机器学习还有一种常见需求,那就是对图像进行编码。处理手写数字图像时使用的方法,是最简单的图像编码方法:用像素表示图像。
  • 衍生特征
    在这里插入图片描述
    在这里插入图片描述
  • 缺失值填充
    在这里插入图片描述
  • 特征管道
    在这里插入图片描述
    在这里插入图片描述

专题:朴素贝叶斯分类

朴素贝叶斯模型是一组非常简单快速的分类算法,通常适用于维度非常高的数据集。因为运行速度快,而且可调参数少,因此非常适合为分类问题提供快速粗糙的基本方案。

  • 贝叶斯分类
    在这里插入图片描述
    在这里插入图片描述
  • 高斯朴素贝叶斯
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 多项式朴素贝叶斯
    在这里插入图片描述
  • 朴素贝叶斯的应用场景

在这里插入图片描述
在这里插入图片描述

专题:线性回归

在这里插入图片描述

  • 简单线性回归
    在这里插入图片描述
  • 基函数回归
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 正则化
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

专题:支持向量机

在这里插入图片描述

  • 支持向量机的 由来
    在这里插入图片描述
    在这里插入图片描述
  • 支持向量机:边界最大化
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 支持向量机总结
    在这里插入图片描述
    在这里插入图片描述

专题:决策树与随机森林

在这里插入图片描述

  • 速记森林的诱因:决策树
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 评估器集成算法:随机森林
    在这里插入图片描述
  • 随机森林回归
    在这里插入图片描述
    在这里插入图片描述
  • 随机森林总结
    在这里插入图片描述

专题:主成分分析

在这里插入图片描述

  • 主成分分析简介
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 用PCA作噪音过滤
    在这里插入图片描述
  • 主成分分析总结
    当然,PCA 并不是一个对每个高维数据集都有效的算法,但是它提供了一条直接且有效的路径,来获得对高维数据的洞察。
    经常受数据集的异常点影响是 PCA 的主要弱点。

专题:流行学习

在这里插入图片描述

  • 多维标度法(MDS)
    在这里插入图片描述
  • 将MDS用于流行学习
    在这里插入图片描述
    在这里插入图片描述
  • 非线性嵌入:当MDS失败时
    在这里插入图片描述
  • 非线性流形:局部线性嵌入
    在这里插入图片描述
    在这里插入图片描述
  • 关于流形方法的一些思考
    在这里插入图片描述

专题:k-means聚类

在这里插入图片描述

  • k-means简介
    在这里插入图片描述
  • k-means算法:期望最大化
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

专题: 高斯混合模型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

专题: 核密度估计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值