Press "Enter" to skip to content

“用Python进行数据科学的线性代数”

来自pixabay的图像

线性代数,一门数学学科,在数据科学中非常有用。我们可以通过使用线性代数对大量数据进行数学操作。

大多数机器学习算法使用线性代数,尤其是矩阵。大部分数据被表示为矩阵形式

现在我们知道了线性代数的应用,让我们就开始吧!!!我们将从基础知识—向量开始

向量

“数学和物理学中,向量是一个术语,泛指一些不能用单个数表示的量,或者泛指某些向量空间中的元素。” [1]

[1] 是在维基百科上提供的定义。大多数人理解这个概念,但为了更简单明了,可以说向量是:

它是指既具有大小又具有方向的量。

它是线性代数的基本构建块。现在,如果你看一看维基百科上的定义,你会看到某些量不能用单个数表示。也就是说,它们有一个维度,而维度可以是任意的。

向量的维度由该向量中的数值元素数量确定。

例子:一个有4个元素的向量的维度为四。

向量的大小可通过以下公式计算:

作者提供的图像

现在举个例子更好地理解。

问题:一个球正在空中飞行,给出了球的速度,以标准笛卡尔坐标系中的x、y和z方向表示。组成这个速度的分量值是:x = -12,y = 8,z = -2。将速度转换为向量,并求球的总速度。

解决方案:

作者提供的图像

使用Python应用向量:

Numpy数组是一种n维数组数据结构,可用于表示向量和矩阵。

import numpy as np v = np.array([1,2,3,4,5]) #向量

基本向量运算:

标量乘法:

作者提供的图像

使用Python的示例:

import numpy as np A = np.array([1,2,3,4]) #向量 print(A*4) #标量乘法

向量加法和减法:

作者提供的图像

Python示例:

import numpy as np A = np.array([1,2,3,4]) #向量1 B = np.array([-4,-3, -2, -1]) #向量2 print(A+B) #向量相加 print(A-B) #向量相减

向量点积:

点积接受两个相同维度的向量,并通过对应分量的乘积求和返回一个标量值。

公式如下:

图像来自作者

点积既是可交换的,也是可分配的。

a.b = b.ca.(b+c) = a.b + a.c

所得的标量值表示一个向量在另一个向量中的贡献。

如果两个向量垂直,那么它们的点积为0,因为它们互不包含彼此。点积还可以用于找到向量的大小以及两个向量之间的角度。

图像来自cuemath.com

让我们看一些点积的示例。

图像来自作者

使用Python的点积示例:

import numpy as np A = np.array([1,2,3,4]) #向量1 B = np.array([-4,-3, -2, -1]) #向量2 print(np.dot(A, B)) #点积

查找角度示例:

图像来自作者

矩阵:

矩阵是一个具有m行和n列的数据。我们可以将多个向量组合成矩阵,每个矩阵是其中的一个向量。矩阵很有用,因为它们允许我们对大量数据进行操作,例如在矩阵量中表示整个方程系统。我们甚至可以通过使用行和列号来访问元素。

图像来自作者

在上面的示例中,我们还展示了如何访问矩阵的元素。如A(1,2),它是第1行和第2列。

使用Python的矩阵示例:

import numpy as np A = np.array([[1,2],[3,4]]) #矩阵 print(A[1,1]) #访问矩阵A的元素

矩阵运算:

矩阵相加和相减:

如果两个矩阵具有相同的形状,我们可以进行这样的操作。

图像来自作者

Python示例:

import numpy as np A = np.array([[1,2],[3,4]]) #矩阵1 B = np.array([[-3,-2],[-4,-5]]) #矩阵2 print(A+B) #相加 print(A-B) #相减

矩阵乘法:

它通过计算第一个矩阵的每一行与第二个矩阵的每一列的点积来实现。

如果这两个矩阵的维度分别是m x n和k x l。只有当n = k时,我们才能进行乘法运算。

作者:作者图片
作者:作者图片

Python示例:

有两种方法可以实现矩阵乘法。一种是使用“@”,另一种是使用numpy模块中的.matmul()方法

import numpy as np A = np.array([[1,2],[3,4]]) #矩阵1 B = np.array([[-3,-2],[-4,-5]]) #矩阵2 print(np.matmul(A, B)) print(A@B)

这两个打印语句会得到相同的结果。

特殊矩阵:

有三种特殊类型的矩阵。

单位矩阵:

是一个对角元素为1,其余元素为0的方阵。任何与单位矩阵相乘的矩阵都等于它本身。

图片来自维基百科

在Python中,我们可以使用numpy.eye()方法来创建单位矩阵

import numpy as np identity = np.eye(4) #创建一个4x4的矩阵。

转置矩阵:

通过交换矩阵的行和列来计算。用“T”表示。

图片来自维基百科

在Python中,我们可以使用.T来对矩阵进行转置

import numpy as np A = np.array([[1,2],[3,4]]) #矩阵 A_trans = A.T

置换矩阵:

它是一个允许我们翻转单独矩阵的行和列的方阵。它有些类似于单位矩阵,其中每个元素都为0,除了一行中的一个元素为1。

图片来自维基百科

要翻转矩阵A的行,我们在左边乘以一个置换矩阵P(PA)。要翻转列,我们在右边乘以一个置换矩阵P(AP)

Image by author

点击这里了解如何在Python中实现。

矩阵形式的线性系统:

矩阵的一个非常有用的应用是用于解决线性方程组。

让我们来看一个例子。

Image by author

我们将把上述方程写成下面所示的矩阵形式。

Image by author

我们的最终目标是将上述表示为 Ax = b 的形式。

Image by author

我们可以将 Ax = b 写成 [A|b]

Image by author

使用NumPy的linalg子模块,我们可以实现这一点。

示例

Image by author

我们将上述线性方程组转换为矩阵。

A = np.array([[1,4,-1],[-1,-3,-2],[2, -1, -2]]) b = np.array([-1,2,-2]) x, y, z = np.linalg.solve(A, b)

逆矩阵:

“在线性代数中,一个n×n的方阵A被称为可逆矩阵(也称为非奇异矩阵或非退化矩阵),如果存在一个n×n的方阵B,使得AB = BA = I”[2]

[2] 维基百科

如上所述,矩阵的逆与其自身的乘积是单位矩阵。并非所有矩阵都有逆矩阵。那些没有逆矩阵的被称为奇异矩阵。

使用Python的示例:

import numpy as np A = np.array([[1,2],[3,4]]) print(np.linalg.inv(A))

其他:

  • 我们可以使用numpy的.zeros()创建一个由零组成的矩阵或向量。

示例:

import numpy as np print(np.zeros((3,2))) #打印一个3x2维度的矩阵。

  • 使用NumPy的linalg子模块可以计算向量的“范数”。

示例:

import numpy as np A = np.array([2,-4,1]) A_norm = np.linalg.norm(A) #结果为4.5825

结论:

在本篇博客中,我们学到了:

  • 矩阵和向量的概念。
  • 对它们执行的操作。
  • 使用Python的NumPy模块来实现它们。
  • 我们还看到了不同类型的矩阵。

就是这样了,大家。希望你们发现这篇文章有帮助,如果你有的话,请关注我在LinkedIn上的信息。

如果你喜欢我的工作,可以给我买杯咖啡:dataguy6@ybl

看看我的最近作品:

DagsHub是数据科学家的不二选择

开始和存储你的数据科学项目的最佳方式!

VoAGI.com

学习数据科学的最佳资源

你计划学习数据科学?🤩但是不知道在哪里和如何学习?😫别担心,我来帮你…

VoAGI.com

Leave a Reply

Your email address will not be published. Required fields are marked *