分享

机器学习中的线性代数

 taotao_2016 2020-05-06

(一)前言

1、总结大数据、人工智能机器学习中的数学知识

2、已经调试通过直接运用,减少查找资料的时间

3、您的关注就是对我对大的支持,也是对科技的支持

机器学习的核心技术是以 数学和数据结构算法为主的基础学科,包括高等数学、线性代数、数论、图论、决策论等等基础理论知识点,在实际的工程实践中出现了很多数学工具比如R语言数学库,商用MATLAB数学库,近年来Python数学库发展的很快,这里涉及到的案例将使用Python语言描述,为了方便大家的运用,本篇文章将线性代数常用的知识点总结出来,可以方便大家的引用,也可以作为大学生和大学教师的参考课件。

本篇文章涉及到的案例基本都是笔者亲自调试通过,要求Python3.6以上版本,要安装numpy、pandas、sklearn、 matplotlib等常见类库,特别说明不建议读者使用Python2.7版本。建议大家使用Pycharm来提高效率。

(二)矩阵

矩阵的运算有加减乘、求矩阵的逆、求矩阵的秩、矩阵的转置等运算,矩阵的运算在线性回归中有着重要的作用,数据分析领域也起着重要的作用,比如关系型数据库本质就是矩阵的各种运算。

1、矩阵的加法

importnumpy asnp
a1 = np.array([[1,2,3]])
a2 = np.array([[4,5,6]])
print(a1 + a2 )

2、矩阵的乘法

设 有两个矩阵A和B,A为3x2矩阵,B为2x3矩阵,乘积的结果为C3x3矩阵,矩阵乘积的规则大家都学过了,再温习下,如下图所示:

机器学习中的线性代数

importnumpy asnp
A = 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的线性无关的横行的极大数目。如果把矩阵看成一个个行向量或者列向量,秩就是这些行向量或者列向量的秩,也就是极大无关组中所含向量的个数。

importnumpy asnp
fromscipy importlinalg
A = 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则被称为可逆矩阵。

importnumpy asnp
fromscipy importlinalg
A = 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

importnumpy asnp
fromscipy importlinalg
A = 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)行向量

importnumpy asnp
V = np.array([1,2,3 ])
print(V)

(2)列向量

importnumpy asnp
#行向量
v1 =np.array([[1,2,3]])
#v1转置
v2 = v1.T
print(v2 )

3、向量的运算

(1)向量的加法

importnumpy asnp
v1 = np.array([[1,2,3]])
v2 = np.array([[4,5,6]])
print(v1+v2 )

结果: [[5 7 9]]

(2)向量的内积

计算内积的时候要注意一个是行向量,一个是列向量:

importnumpy asnp
v1 = np.array([[1,2,3]])
v2 = np.array([[4,5,6]]).T
print(np.dot(v1,v2) )

机器学习中的线性代数

4、特征向量

如果向量v与变换A满足 Av=λv,则称向量v是变换A的一个特征向量,λ是相应的特征值。线性变换的特征向量是指在变换下方向不变,或者简单地乘以一个缩放因子的非零向量;特征向量对应的特征值是它所乘的那个缩放因子。

在A变换的作用下,向量V仅仅在尺度上变为原来的λ倍。称V是A 的一个特征向量,λ是对应的特征值。

例如:有个简单的二阶方阵A = [[2,1] , [ 1, 2 ] ]求其特征向量和特征值

importnumpy asnp
fromscipy importlinalg
A = 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 】

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多