AI基础学习之线性代数的学习,学习自华为iLearnX网站
numpy
numpy是款基于 Python的数值处理模块,在处理矩阵数据方面有很大的功能与优势。
因为线性代数的主要内容就是对矩阵的处理,所以本章节主要的内容都是基于 numpy进行展
开,另外也会涉及到方程组求解,所会用到数学科学库scipy.
- 导入相应库
1 | import numpy as np |
reshape运算
在数学中并没有reshape运算,但是在 numpy运算库中是一个非常常用的运算,用来改变一个张量的维度数和个维度的大小,例如一个10x10的图片在保存时直接保存为一个包含100个元素的序列,在读取后就可以使用 reshape将其从1x100变换为10x10。示例如下:
1 | import numpy as np |
转置实现
向量和矩阵的转置是交换行列顺序,而三维及以上张量的转置就需要指定转换的维度。
1 | import numpy as np |
矩阵乘法实现
矩阵乘法:记两个矩阵分别为A和B,两个矩阵能够相乘的条件为第一个矩阵的列数等于第二个矩阵的行数。
1 | import numpy as np |
矩阵对应运算
元素对应运算:针对形状相同矩阵的运算统称,包括元素对应相乘,相加等,即对两个矩阵相同位置的元素进行加减乘除的运算。
1 | import numpy as np |
逆矩阵实现
只有方阵($n\times n$)才有逆矩阵,逆矩阵的实现
1 | import numpy as np |
特征值与特征向量
求矩阵的特征值与特征向量并实现可视化
1 | # 导入相应的库 |
求行列式
1 | import numpy as np |
奇异值分解实现
例:通过标题的关键词对海量的文章分类
1 | import numpy as np |
奇异值分解应用-图像压缩
一副灰度图像可以看作一个矩阵,对这样矩阵进行奇异值分解,奇异值矩阵的奇异值是按照从大到小的顺序排列的。对应奇异值大的奇异向量所保存的信息量越大,而奇异值大小一般都衰减得比较快。因比前K个奇异值及其对应的奇异向量就包含了图像的大部分信息。所以前K项奇异值及其奇异向量来组成的图像可以达到基本和原图一样的清晰度,但是数据量却大大减少了。这样就可以达到图像数据压缩的效果。
1 | import numpy as np |
线性方程组求解
求解线性方程组比较简单,只需要用到一个函数(scipy.linglg.solve)
就可以了。
案例引入:有三种价格未知的水果,苹果、香蕉、葡萄。已知,李雷购买10斤苹果、2斤香蕉、5斤葡萄花费了10元,韩梅梅购买4斤苹果、4斤香蕉、2斤葡萄花费了8元,汤姆购买2斤苹果、2斤香蕉、2斤葡萄花费了5元;问,苹果、香蕉、葡萄分别多少钱一斤?
根据已知条件,可以构建如下多元方程组,其中$x_1、x_2、x_3$分别是苹果、香蕉、葡萄的价格,目的是求解$x_1、x_2、x_3$的值.
$10x_1+2x_2+5x_3=10
\\4x_1+4x_2+2x_3=8\\
2x_1+2x_2+2x_3=5$
1 | import numpy as np |