前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习(5):几个重要矩阵

机器学习(5):几个重要矩阵

作者头像
double
发布2018-04-02 14:50:01
1.3K0
发布2018-04-02 14:50:01
举报
文章被收录于专栏:算法channel算法channel

1 可逆矩阵

矩阵A首先是方阵,并且存在另一个矩阵B,使得它们的乘积为单位阵,则称B为A的逆矩阵。如下所示,利用numpy模块求解方阵A的逆矩阵,B,然后再看一下A*B是否等于单位阵E,可以看出等于单位阵E。

python测试代码:

import numpy as np

'方阵A'

A = np.array([[1,2],[3,4]])

A

array([[1, 2],

[3, 4]])

'逆矩阵B'

import numpy.linalg as la

B = la.inv(A)

B

array([[-2. , 1. ],

[ 1.5, -0.5]])

'A*B'

E = A.dot(B)

E

array([[ 1.00000000e+00, 1.11022302e-16],

[ 0.00000000e+00, 1.00000000e+00]])

2 奇异矩阵

奇异矩阵首先得是方阵(即行数和列数相等的矩阵),再检查此矩阵的行列式的值,等于0,则为奇异矩阵。不等于0就是非奇异矩阵了。注意,非奇异矩阵也是方阵。

非奇异矩阵python测试 :

import numpy as np

'方阵A'

A = np.array([[1,2],[3,4]])

A

array([[1, 2],

[3, 4]])

'方阵A的行列式计算'

la.det(A)

-2.0000000000000004

行列式不为0,所以矩阵A为非奇异矩阵

C = np.array([[1,2],[1,2]])

C

array([[1, 2],

[1, 2]])

la.det(C)

0.0

行列式为0,因此方阵C为奇异矩阵

3 病态矩阵

求解方程组时对数据的小扰动很敏感的矩阵称为病态矩阵,具体来说可以这样描述:

解线性方程组 Ax = b 时,若对于系数矩阵 A 及右端项 b 的小扰动 δA、δb, 方程组 (A+δA) χ = b+δb 的解 χ 与原方程组 Ax=b 的解差别很大,则称矩阵 A 为病态矩阵。

'病态矩阵测试 Ax = b'

'x = la.inv(A).dot(b) 如下python代码所示:'

A = np.array([[400,-201],[-800,401]])

b = np.array([200,-200])

x = la.inv(A).dot(b)

x

array([-100., -200.])

'将 A 矩阵中的元素 400 改变成 401,这就是一个小扰动'

'但是小扰动,造成的解与原来相比,差别非常大'

A = np.array([[401,-201],[-800,401]])

b = np.array([200,-200])

x = la.inv(A).dot(b)

x

array([ 40000.00000004, 79800.00000007])

由此可见,系数矩阵A只是做了一个微调,但是得到的解与原来的真解,真是相差甚远啊!

4 条件数

衡量矩阵的病态程度通常是看矩阵的条件数。条件数的定义:K(A)= ‖inv(A)‖ * ‖A‖ 的大小。

其中,‖‖ 表示对矩阵取某一种范数

接下来测试上面提到的病态矩阵的条件数,和一个良好的矩阵的条件数,看看它们的大小。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员郭震zhenguo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档