【干货】用于机器学习的线性代数速查表

NumPy,Python的数值计算库,它提供了许多线性代数函数。对机器学习从业人员用处很大。

在这篇文章中,你将看到对于机器学习从业者非常有用的处理矢量和矩阵的关键函数。

这是一份速查表,所有例子都很简短,假设你处于熟悉它们的阶段,建议收藏备用。

本教程分为7个部分; 他们是:

1. 数组

2. 矢量

3. 矩阵

4. 矩阵的类型

5. 矩阵运算

6. 矩阵分解

7. 统计

1.数组

创建NumPy数组有很多方法。

数组

from numpyimport array
A= array([[1,2,3],[1,2,3],[1,2,3]])

零(用零填充数组)

from numpyimport zeros
A= zeros([3,5])

一(用1填充数组)

from numpyimport ones
A= ones([5,5])

2.矢量

矢量是一个标量的行或者列。

矢量加法

c= a+ b

矢量减法

c= a- b

矢量乘法

c= a* b

矢量除法

c= a/ b

矩阵点积

c= a.dot(b)

矩阵乘以标量

c= a* 2.2

向量范数

from numpy.linalgimport norm
l2= norm(v)

3.矩阵

矩阵是标量组成的二维数组。

矩阵加法

C= A+ B

矩阵减法

C= A- B

矩阵乘法(哈达马积)

C= A* B

矩阵除法

C= A/ B

矩阵乘以矩阵(点积)

C= A.dot(B)

矩阵乘以向量(点积)

C= A.dot(b)

矩阵乘以标量

C= A.dot(2.2)

4.矩阵的类型

在更广泛的计算中经常使用不同类型的矩阵作为元素。

三角矩阵

# lower
from numpyimport tril
lower= tril(M)
# upper
from numpyimport triu
upper= triu(M)

对角矩阵

from numpyimport diag
d= diag(M)

单位矩阵

from numpy import identity I = identity(3)

5.矩阵运算

矩阵操作通常用作更高级计算的基础。

矩阵转置

B= A.T

矩阵求逆

from numpy.linalgimport inv
B= inv(A)

矩阵的迹

from numpyimport trace
B= trace(A)

矩阵行列式

from numpy.linalgimport det
B= det(A)

矩阵的秩

from numpy.linalgimport matrix_rank
r= matrix_rank(A)

6.矩阵分解

矩阵分解(matrix factorization或Matrix factorization)将矩阵分解为其组成部分,以使其他运算更简单,更稳定。

LU分解

from scipy.linalgimport lu
P, L, U= lu(A)

QR分解

from numpy.linalgimport qr
Q, R= qr(A,'complete')

特征分解

from numpy.linalgimport eig
values, vectors= eig(A)

奇异值分解

from scipy.linalgimport svd
U, s, V= svd(A)

7.统计

统计数据总结了矢量或矩阵的内容,并且经常用作更广泛操作的组成部分。

均值

from numpyimport mean
result= mean(v)

方差

from numpyimport var
result= var(v, ddof=1)

标准差(均方差)

from numpyimport std
result= std(v, ddof=1)

协方差矩阵

from numpyimport cov
sigma= cov(v1, v2)

线性最小二乘

from numpy.linalg import lstsq b = lstsq(X, y)

附:

NumPy API

  • 线性代数:https://docs.scipy.org/doc/numpy-1.13.0/reference/routines.linalg.html
  • 统计:https://docs.scipy.org/doc/numpy-1.13.0/reference/routines.statistics.html

其他速查表

  • https://minireference.com/static/tutorials/linear_algebra_in_4_pages.pdf
  • https://github.com/scalanlp/breeze/wiki/Linear-Algebra-Cheat-Sheet
  • https://s3.amazonaws.com/assets.datacamp.com/blog_assets/Python_SciPy_Cheat_Sheet_Linear_Algebra.pdf

原文发布于微信公众号 - ATYUN订阅号(atyun_com)

原文发表时间:2018-03-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏机器学习算法原理与实践

word2vec原理(二) 基于Hierarchical Softmax的模型

    word2vec原理(二) 基于Hierarchical Softmax的模型

1952
来自专栏奇点大数据

Pytorch神器(8)

在学习深度学习的过程中,我们通常会学到这样一对单词“Encoder”和“Decoder”。其实只要你学习深度学习,“Encoder”和“Decoder”就一定会...

1682
来自专栏机器之心

教程 | 如何使用贪婪搜索和束搜索解码算法进行自然语言处理

2875
来自专栏绿巨人专栏

机器学习中的基本数学知识

6767
来自专栏信数据得永生

《Scikit-Learn与TensorFlow机器学习实用指南》第15章 自编码器

3967
来自专栏人工智能头条

RNN在自然语言处理中的应用及其PyTorch实现

1402
来自专栏MyBlog

#数值分析读书笔记(4)求非线性方程的数值求解

是否同号, 然后即可知根落在左侧还是右侧, 用这个中点来代替掉原来的端点, 然后得到一个新的区间, 如此反复迭代下去之后, 我们会发现区间收敛到接近一个数

1622
来自专栏专知

【NAACL 2018】Self-attention考虑相对位置,谷歌Vaswani团队最新工作

2105
来自专栏绿巨人专栏

强化学习读书笔记 - 11 - off-policy的近似方法

3587
来自专栏机器之心

教程 | 从字符级的语言建模开始,了解语言模型与序列建模的基本概念

选自imaddabbura 机器之心编译 你有没有想过 Gmail 自动回复是如何进行的?或者手机在你输入文本时如何对下一个词提出建议?生成文本序列的通常方式是...

3775

扫码关注云+社区