(一)前言
1、总结大数据、人工智能机器学习中的数学知识
2、已经调试通过直接运用,减少查找资料的时间
3、您的关注就是对我对大的支持,也是对科技的支持
机器学习的核心技术是以 数学和数据结构算法为主的基础学科,包括高等数学、线性代数、数论、图论、决策论等等基础理论知识点,在实际的工程实践中出现了很多数学工具比如R语言数学库,商用MATLAB数学库,近年来Python数学库发展的很快,这里涉及到的案例将使用Python语言描述,为了方便大家的运用,本篇文章将线性代数常用的知识点总结出来,可以方便大家的引用,也可以作为大学生和大学教师的参考课件。
本篇文章涉及到的案例基本都是笔者亲自调试通过,要求Python3.6以上版本,要安装numpy、pandas、sklearn、 matplotlib等常见类库,特别说明不建议读者使用Python2.7版本。建议大家使用Pycharm来提高效率。
(二)矩阵
矩阵的运算有加减乘、求矩阵的逆、求矩阵的秩、矩阵的转置等运算,矩阵的运算在线性回归中有着重要的作用,数据分析领域也起着重要的作用,比如关系型数据库本质就是矩阵的各种运算。
1、矩阵的加法
import numpy as npa1 = np.array([[1,2,3]])a2 = np.array([[4,5,6]])print(a1 a2 )
2、矩阵的乘法
设 有两个矩阵A和B,A为3x2矩阵,B为2x3矩阵,乘积的结果为C3x3矩阵,矩阵乘积的规则大家都学过了,再温习下,如下图所示:
import numpy as npA = np.array([[1,2],[3,4],[5,6]])B = np.array([[1,2,3],[4,5,6]])print(np.dot(A,B) )
A x B = C ,结果为:
[[ 9 12 15]
[19 26 33]
[29 40 51]]
C 的第1行为 :1x1 1x4 1x2 2x5 1x3 2x6
C 的第2行为 :3x1 4x4 3x2 4x5 3x3 4x6
C 的第3行为 :5x1 6x4 5x2 6x5 5x3 6x6
3、求矩阵的秩
矩阵A的列秩是A的线性独立的纵列的极大数目。类似地,行秩是A的线性无关的横行的极大数目。如果把矩阵看成一个个行向量或者列向量,秩就是这些行向量或者列向量的秩,也就是极大无关组中所含向量的个数。
import numpy as npfrom scipy import linalgA = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1], [0, 0, 0]])#非0的行数就是矩阵的秩n = np.linalg.matrix_rank(A)print(n)
结果:n = 3
4、求矩阵的逆
设A是数域上的一个n阶方阵,若在相同数域上存在另一个n阶矩阵B,使得: AB=BA=E。 则我们称B是A的逆矩阵,而A则被称为可逆矩阵。
import numpy as npfrom scipy import linalgA = np.array([[1, 2 ], [3, 4, ] ])An = linalg.inv(A)print(An)
5、求解线性方程组
有个方程组如下所示:
X1 x2 x3 = 10
X1 - x2 x3 = 6
X1 - x2 - x3 = 0
import numpy as npfrom scipy import linalgA = np.array([[1, 1, 1], [1, -1, 1], [1, -1, -1]])y = np.array([10, 6, 0])x = linalg.solve(A, y)print(x)
结果:[5. 2. 3.]
(三)向量
1、向量的概念
在线性代数中 的向量是指n个实数/复数组成的有序数组,称为n维向量。α=(a1,a2,…,an) 称为n维向量。其中ai称为向量α的第i个分量。
2、行向量和列向量
(1)行向量
import numpy as npV = np.array([1,2,3 ])print(V)
(2)列向量
import numpy as np#行向量v1 =np.array([[1,2,3]])#v1转置v2 = v1.Tprint(v2 )
3、向量的运算
(1)向量的加法
import numpy as npv1 = np.array([[1,2,3]])v2 = np.array([[4,5,6]])print(v1 v2 )
结果: [[5 7 9]]
(2)向量的内积
计算内积的时候要注意一个是行向量,一个是列向量:
import numpy as npv1 = np.array([[1,2,3]])v2 = np.array([[4,5,6]]).Tprint(np.dot(v1,v2) )
4、特征向量
如果向量v与变换A满足 Av=λv,则称向量v是变换A的一个特征向量,λ是相应的特征值。线性变换的特征向量是指在变换下方向不变,或者简单地乘以一个缩放因子的非零向量;特征向量对应的特征值是它所乘的那个缩放因子。
在A变换的作用下,向量V仅仅在尺度上变为原来的λ倍。称V是A 的一个特征向量,λ是对应的特征值。
例如:有个简单的二阶方阵A = [[2,1] , [ 1, 2 ] ]求其特征向量和特征值
import numpy as npfrom scipy import linalgA = np.array([[1, 2], [2, 8]])v, v_vector = linalg.eig(A)print(v)print(v_vector)
结果为:
[0.46887113 0.j 8.53112887 0.j]
[[-0.96649965 -0.25666794]
[ 0.25666794 -0.96649965]]
意思是:
特征值0.46887113对应的特征向量是【 [[-0.96649965 , [ 0.25666794 】
特征值8.53112887对应的特征向量是【 -0.25666794, -0.96649965 】
,