Python 矩阵(线性代数)

这里有一份新手友好的线性代数笔记,是和深度学习花书配套,还被Ian Goodfellow老师翻了牌。

笔记来自巴黎高等师范学院的博士生Hadrien Jean,是针对“花书”的线性代数一章,初来乍到的小伙伴可以在笔记的辅佐之下,了解深度学习最常用的数学理论,加以轻松的支配。

理论代码搭配食用,疗效更好。笔记里列举的各种例子,可以帮初学者用一种更直观实用的方式学好线代。开始前,你需要准备好NumpyPython

然后来看一下,要走怎样一个疗程——

1 标量、向量、矩阵和张量

△ 标量,向量,矩阵,张量 (左起)

这一课讲了向量和矩阵,以及它们的一些基础运算。另外,这里介绍了Numpy的一些相关函数,也浅浅地谈到了Broadcasting机制。

2 矩阵和向量的乘法

△ 矩阵与向量的点乘

本小节主要讨论的是,向量和矩阵的点积,我们可以从中了解矩阵的一些属性。之后,便是用矩阵符号来创建一个线性方程组——这也是日后的学习里,经常要做的事情。

3 单位矩阵和逆矩阵

△ 单位矩阵长这样

我们要了解这两种矩阵为什么重要,然后知道怎样在Numpy里和它们玩耍。另外,本小节包含用逆矩阵求解线性方程组的一个例题。

4 线性依赖与线性生成空间

线性方程组,除非无解,不然要么有唯一解,要么有无穷多解

看着图像,我们可能更直观地了解,这件看上去理所当然的事情,背后的道理是什么。

△ 无解,一解,无穷多解 (左起)

回到方程组的矩阵形式,感受Gilbert Strang说的“横看成岭侧成峰”——竖看几个方程,横看一个方程里的多个系数。

然后,我们要理解什么是线性组合,还会看到关于超定和欠定方程组的几个例子。

5 范数

向量的范数是个函数,将一个向量输入,我们就得到一个正值——可以把它看做向量的长度

范数可以用来衡量模型预测值与实际值之间的距离

6 特殊的矩阵和向量

△ 对角矩阵 (左) 与对称矩阵 (右)

一些矩阵和向量,会有和普通矩阵/向量不一样的有趣特性。虽然,这个小节不长,但对理解后面的内容会有帮助。

7 特征分解

这里,有线性代数的一些主要概念。我们可以对特征向量和特征值,有一个初步的了解。

大家将会看到,矩阵并不像外表那样单调,它们可以作为线性变换的工具。用一个矩阵对它的特征向量做些加工,便会得到方向相同的新向量

△ 特征向量 (蓝箭头) ,线性变换后的向量 (黄箭头)

然后,矩阵还可以用来表示二次函数。利用矩阵的特征分解,可以找到对应函数的最大值和最小值。

坚持读到这个小节,就可以解锁用Python将线性变换可视化的操作。

8 奇异值分解 (SVD)

这是除了特征值分解之外的,另一种矩阵分解方式。SVD是将一个矩阵,分解到三个新矩阵里面。

△ 一分为三的矩阵A

依照“将矩阵看做空间的线性变换”这一理念,我们可以将这些新的矩阵,当做空间的子变换——变换并非一步达成,而是经过了三个分解动作。

走到这里,就可以捡起“将SVD用于图像处理”的新装备。

9 摩尔-彭若斯伪逆

在研究矩阵的路上,我们会遇到不同的风景。

并不是所有矩阵都有自己的逆矩阵。不幸之处不在于孤独,而在于逆矩阵可以用来解方程组。方程组无解的时候,也就没有逆矩阵。

△ 无解的超定方程组

不过,如果将误差最小化,我们也可以找到一个很像解的东西。伪逆便是用来找假解的。

10 迹

△ 矩阵的迹

上图就是矩阵的。后面讲到主成分分析 (PCA) 的时候,会需要这个看上去不怎么厉害的东西。

11 行列式

△ 有正有负的行列式

行列式是一个奇妙的数值,可以告诉我们关于矩阵的很多秘密。

12 主成分分析 (PCA) 例题

△ 要找到编码与解码的方法

恭喜大家来到线性代数的最后一课

用上前十一课传授的全部技能,便能掌握这个数据分析重要工具的使用方法。

最后说一句,这份笔记看去有几分软妹,图片配色和那些年所见的硬汉画风截然不同,相信初学者的各位也会很有食欲的。

全套笔记真容在此:
https://hadrienj.github.io/posts/

花书线代章节在此:
http://www.deeplearningbook.org/contents/linear_algebra.html

Python 矩阵(线性代数)的更多相关文章

  1. 利用Python学习线性代数 -- 1.1 线性方程组

    利用Python学习线性代数 -- 1.1 线性方程组 本节实现的主要功能函数,在源码文件linear_system中,后续章节将作为基本功能调用. 线性方程 线性方程组由一个或多个线性方程组成,如 ...

  2. 用 python 解决线性代数中的矩阵运算

    用 python 解决线性代数中的矩阵运算 矩阵叉乘 矩阵求逆 矩阵转置 假定AX=B,求解未知矩阵X 矩阵的行列式值|matrix| 未完待续..... import sys from PyQt5. ...

  3. Python与线性代数基本概念

    在Python中使用Numpy创建向量: x = np.array([1, 2, 3, 4]) 创建3 x 3矩阵 B = np.array([[1, 2],[3, 4],[5, 6]]) Shape ...

  4. Python: 矩阵与线性代数运算

    需要执行矩阵和线性代数运算,比如矩阵乘法.寻找行列式.求解线性方程组等等. 矩阵类似于3.9 小节中数组对象,但是遵循线性代数的计算规则.下面的一个例子展示了矩阵的一些基本特性: >>&g ...

  5. Python 矩阵与矩阵以及矩阵与向量的乘法

    import numpy as np numpy模块的array相乘时,有两种方式:一是矩阵形式,二是挨个相乘. 需要用矩阵形式相乘时,则要用np.dot()函数. #矩阵与矩阵相乘a = np.ar ...

  6. python 矩阵

    python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包. 1.numpy的导入和使用 from numpy import *;#导入numpy的库函数 im ...

  7. Python Numpy线性代数操作

    Python Numpy线性代数函数操作 1.使用dot计算矩阵乘法 import numpy as np from numpy import ones from __builtin__ import ...

  8. Python 矩阵相关

    Python 中矩阵运算主要使用numpy库.NumPy的主要对象是同种元素的多维数组.这是一个所有的元素都是一种类型.通过一个正整数索引的元素表格(通常是元素是数字).因此对于随机查找来说,比pyt ...

  9. Numpy使用大全(python矩阵相关运算大全)-Python数据分析基础2

    //2019.07.10python数据分析基础——numpy(数据结构基础) import numpy as np: 1.python数据分析主要的功能实现模块包含以下六个方面:(1)numpy—— ...

随机推荐

  1. 19.顺时针打印矩阵(python)

    题目描述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数 ...

  2. sh_07_函数的嵌套调用

    sh_07_函数的嵌套调用 def test1(): print("*" * 50) def test2(): print("-" * 50) # 函数的嵌套调 ...

  3. sh_08_石头剪刀布

    sh_08_石头剪刀布 # 导入随机工具包 # 注意:在导入工具包的时候,应该将导入的语句,放在文件的顶部 # 因为,这样可以方便下方的代码,在任何需要的时候,使用工具包中的工具 import ran ...

  4. 【转】Django之Model层的F对象,Q对象以及聚合函数

    转自:https://blog.csdn.net/wsy_666/article/details/86692050 一.F对象: 作用:用于处理类属性(即model的某个列数据),类属性之间的比较.使 ...

  5. Vue中基本指令用法

    指令在Vue中是个很重要的功能,在Vue项目中是必不可少的.根据官网的介绍,指令 (Directives) 是带有 v- 前缀的特殊属性.指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地 ...

  6. 【Python】学习笔记十三:函数的参数对应

    位置传递 我们在定义函数时候已经对函数进行了参数传递调用,但是那只是粗浅的位置传递 示例 def sum(a,b,c): d = a+b+c return d print(sum(1,2,3)) 调用 ...

  7. 运行Spark官方提供的例子

    去spark官网把spark下载下来: https://spark.apache.org/downloads.html 解压,可以看下目录: 其中examples目录下提供了java,scala,py ...

  8. 初识linux命令

    1. type: 查看是外部命令/内部命令 外部命令 有存放地址信息 内部命令 is a shell builtin 2.file 查看文件的编码方式 file /sbin/ifconfig 编译执行 ...

  9. 2018-2019-2 网络对抗技术 20165235 Exp 9 Web安全基础

    实验任务 本实践的目标理解常用网络攻击技术的基本原理,做不少于7个题目,共3.5分.包括(SQL,XSS,CSRF).Webgoat实践下相关实验. 基础问题回答 (1)SQL注入攻击原理,如何防御 ...

  10. AI-人工智能/机器学习 seetafaceJNI

    基于中科院seetaface2进行封装的JAVA人脸识别库,支持人脸识别.1:1比对.1:N比对. 项目介绍 基于中科院seetaface2进行封装的JAVA人脸识别算法库,支持人脸识别.1:1比对. ...