作者|Soner Yıldırım
编译|VK
起源|Towards Data Science
机器学习和深度学习模型须要大量的数据。它们的性能在很大水平上取决于数据量。因而,咱们偏向于收集尽可能多的数据,以建设一个持重和精确的模型。数据以多种不同的格局收集,从数字到图像,从文本到声波。然而,咱们须要将数据转换为数字以便对其进行剖析和建模。
仅仅将数据转换为标量(单个数字)是不够的。随着数据量的减少,应用标量的操作开始变得低效。咱们须要向量化或矩阵运算来无效地进行计算。这就是线性代数发挥作用的中央。
线性代数是数据迷信畛域的重要课题之一。在这篇文章中,咱们将通过应用NumPy的例子来介绍线性代数的基本概念。
NumPy是Python的一个科学计算库,是许多库(比方Pandas)的根底。
线性代数中的对象类型
线性代数中的对象(或数据结构)类型:
- 标量:单个数字
- 向量:数字数组
- 矩阵:二维数字数组
- 张量:N>2的N维数列
标量就是一个数字。咱们将在上面的示例中看到,它能够用于向量化操作。
向量是一组数字。例如,5个元素的向量:
咱们能够在向量化运算中应用标量。对向量的每个元素执行指定的操作。例如
矩阵是二维向量
它看起来像是一个蕴含行和列的pandas数据框。实际上,pandas数据帧被转换成矩阵,而后输出到机器学习模型中。
张量是一个N维数数组,其中N大于2。张量次要用于输出数据为三维的深度学习模型。
很难用数字来示意,然而能够把T看成3个3x2形态的矩阵。
shape办法可用于查看numpy数组的形态。
数组的大小是通过乘以每个维度的大小来计算的。
罕用矩阵术语
如果行数等于列数,矩阵称为方阵。因而,下面的矩阵A是一个方阵。
单位矩阵,示意为I,是一个方阵,对角线上有是,其余地位全是0。NumPy的identity函数能够用来创立任意大小的单位矩阵。
一个单位矩阵的非凡之处在于矩阵乘上它不会扭转。从这个意义上讲,它与实数中的数字1类似。咱们将在这篇文章的矩阵乘法局部用单位矩阵做例子。
矩阵的逆矩阵是与原始矩阵相乘失去单位矩阵的矩阵。
不是每个矩阵都有一个逆矩阵。如果矩阵A有一个逆矩阵,那么它被称为可逆或非奇怪
点乘与矩阵乘法
点乘和矩阵乘法是简单机器学习和深度学习模型的组成部分,因而对它们进行全面的理解是十分有价值的。
两个向量的点积是元素绝对于其地位的乘积之和。第一个向量的第一个元素乘以第二个向量的第一个元素,依此类推。这些积的和就是点积。在NumPy中计算点积的函数是dot()。
让咱们首先以numpy数组的模式创立两个简略的向量并计算点积。
点积计算为(1*2)+(2*4)+(3*6),即28。
因为咱们在雷同的地位相乘,所以这两个向量的长度必须雷同能力失去点积。
在数据迷信畛域,咱们次要解决矩阵。矩阵是一组以结构化形式组合的行和列向量。因而,两个矩阵的相乘波及向量的许多点积运算。咱们再看一些例子就会更分明了。咱们先用NumPy创立两个2x2矩阵。
2x2矩阵有2行2列。行和列的索引以0结尾。例如,A(索引为0的行)的第一行是[4,2]的数组。A的第一列是[4,0]的数组。第一行和第一列的元素是4。
咱们能够拜访单个行、列或元素,如下所示:
这些是了解矩阵乘法的重要概念。
两个矩阵的相乘波及到第一个矩阵的行和第二个矩阵的列之间的点乘。第一步是A的第一行和B的第一列之间的点积。这个点积的后果是在地位[0,0](即第一行,第一列)处失去的矩阵的元素。
因而,失去的矩阵C在第一行和第一列将有一个 (4*0) + (2*4) 。C[0,0]=18。
下一步是A的第一行和B的第二列的点积。
C在第一行和第二列有一个(4*0)+(2*4)。C[0,1]=8。
第一行A已实现,因而咱们从A的第二行开始,并遵循雷同的步骤。
C在第二行和第一列有一个(0*4)+(3*1)。C[1,0]=3。
最初一步是A的第二行和B的第二列之间的点积。
C在第二行和第二列有一个(0*0)+(3*4)。C[1,1]=12。
咱们曾经看到它是如何一步一步实现的。所有这些操作都是用np.dot操作:
你可能还记得,咱们曾经提到过,单位矩阵乘以任何矩阵时不会扭转矩阵。让咱们举个例子。
咱们还提到,当一个矩阵乘以它的逆矩阵时,后果就是单位矩阵。让咱们先创立一个矩阵,而后求它的逆矩阵。咱们能够利用NumPy函数linalg.inv()求矩阵的逆。
用B的逆矩阵C乘以B:
咱们失去了单位矩阵。
正如咱们在向量点积中回顾的那样,两个向量的长度必须雷同能力有一个点积。矩阵乘法中的每个点积运算都必须遵循这个规定。点积是在第一个矩阵的行和第二个矩阵的列之间进行的。因而,第一个矩阵的行和第二个矩阵的列的长度必须雷同。
矩阵乘法的要求是第一个矩阵的列数必须等于第二个矩阵的行数。
例如,咱们能够用一个3x2矩阵乘以一个2x3矩阵。
后果矩阵的形态将是3x3,因为咱们对A的每一行进行3点积运算,A有3行。确定后果矩阵形态的一种简略办法是从第一个矩阵中提取行数,从第二个矩阵中提取列数:
- 3x2和2x3相乘返回3x3
- 3x2和2x2相乘返回3x2
- 2x4和4x3相乘返回2x3
咱们曾经探讨了线性代数的根本运算。这些基本操作是简单机器学习和深度学习模型的构建根底。在模型优化过程中,须要进行大量的矩阵乘法运算。因而,理解基础知识也是十分重要的。
谢谢你的浏览。如果你有任何反馈,请通知我。
原文链接:https://towardsdatascience.co...
欢送关注磐创AI博客站:
http://panchuang.net/
sklearn机器学习中文官网文档:
http://sklearn123.com/
欢送关注磐创博客资源汇总站:
http://docs.panchuang.net/