程序员的数学【线性代数高级】(一)

简介: 本文其实值属于:程序员的数学【AIoT阶段二】 的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 线性代数高级

前言

本文其实值属于:程序员的数学【AIoT阶段二】 的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 线性代数高级,读之前建议先看:程序员的数学【线性代数基础】本文涵盖了一些计算的问题并使用代码进行了实现,安装代码运行环境见博客:最详细的Anaconda Installers 的安装【numpy,jupyter】(图+文)如果你只是想要简单的了解有关线代的内容,那么只需要学习一下博文:NumPy从入门到高级,如果你是跟着博主学习AIoT的小伙伴,建议先看博文:数据分析三剑客【AIoT阶段一(下)】(十万字博文 保姆级讲解),如果你没有Python基础,那么还需先修博文:Python的进阶之道【AIoT阶段一(上)】(十五万字博文 保姆级讲解)


一、特征值和特征向量

1.1 概念定义

🚩两个向量相乘效果图如下:

image.png

看图,这张图片竖直方向进行偏移,形象说明了向量相乘效果:

image.png

image.png

import numpy as np
A = np.random.randint(1, 10, size = (4, 4))
display(A)
print('------------------------')
if np.linalg.matrix_rank(A) == 4: # 必须是满秩矩阵
    # 实对称矩阵特征值为实数,非对称矩阵和复矩阵特征值可能为复数
    w, v = np.linalg.eig(A) # 返回特征值和特征向量
    display(w, v)
    w = np.real(w)
    v = np.real(v)
    print('------------------------')
    display(A.dot(v[:, 0]))
    display(w[0] * v[:, 0])

5.png

实对称矩阵,求解特征值和特征向量为实数

# 实对称矩阵
import numpy as np
B = np.array([[1, 2, 3],
              [2, 5, 8],
              [3, 8, 9]])
np.linalg.eig(B)

image.png

矩阵的秩: 用初等行变换将矩阵 A化为阶梯形矩阵, 则矩阵中非零行的个数就定义为这个矩阵的秩, 记为 r ( A ) 。

image.png

image.png

经过初等变换可知这个方程无解。

import numpy as np
X = np.array([[1, 2, 3],
              [4, 5, 6],
              [7, 8, 2]])
y = np.array([1, 2, 3])
# 查看矩阵秩,输出结果为2
print('矩阵X的秩为:',np.linalg.matrix_rank(X))
# 尝试求解报错,说明方程没有唯一解 
np.linalg.solve(X,y)

image.png

1.2 满秩矩阵

🚩满秩矩阵(non-singular matrix): 设A 是 n  阶矩阵, 若 r ( A ) = n , 则称 A 为 满秩矩阵。但满秩不局限于n阶矩阵。若矩阵秩等于行数,称为行满秩;若矩阵秩等于列数,称为列满秩。既是行满秩又是列满秩则为n阶矩阵即n阶方阵

image.png

image.png

根据初等行变换,可得:

image.png

1.3 方程的解

import numpy as np
X = np.array([[0, 2, -1],
              [1, -1, 1],
              [2, 1, -1]])
y = np.array([1, 0, -2])
# 查看矩阵秩
print('矩阵X的秩为:',np.linalg.matrix_rank(X))
# 尝试求解报错,说明方程没有唯一解 
np.linalg.solve(X,y).round(2)

image.png

1.4 特征值和特征向量示例

🚩所有特征值的乘积等于 A 的行列式的:

image.png

import numpy as np
X = np.array([[2, 3, 7],
              [1, 5, 8],
              [0, 4, 9]])
# w表示特征值,v表示特征向量
w,v = np.linalg.eig(X)
print('矩阵X的行列式:',np.linalg.det(X))
print('特征值累乘值:',np.round(np.real(np.prod(w))))

image.png

特征值和特征向量在机器学习中会被用到,像PCA主成分分析,LDA线性判别分析,以及其它算法里面都会用到它的理论和方法。




目录
相关文章
|
搜索推荐 算法 程序员
程序员的数学【线性代数高级】(三)
本文其实值属于:程序员的数学【AIoT阶段二】 的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 线性代数高级
187 0
程序员的数学【线性代数高级】(三)
|
存储 程序员 Python
程序员的数学【线性代数高级】(二)
本文其实值属于:程序员的数学【AIoT阶段二】 的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 线性代数高级
233 0
程序员的数学【线性代数高级】(二)
|
机器学习/深度学习 程序员
程序员的数学【线性代数基础】(三)
本文其实值属于:程序员的数学【AIoT阶段二】 的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 线性代数基础,在机器学习中经常会有矩阵、向量的定义以及计算,是公式定义、推导中必不可少的一部分内容,很多基础概念的定义中都用到了向量的概念,有关线性代数,
347 0
程序员的数学【线性代数基础】(三)
|
机器学习/深度学习 数据挖掘 程序员
程序员的数学【线性代数基础】(一)
本文其实值属于:程序员的数学【AIoT阶段二】 的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 线性代数基础,在机器学习中经常会有矩阵、向量的定义以及计算,是公式定义、推导中必不可少的一部分内容,很多基础概念的定义中都用到了向量的概念,有关线性代数,
376 0
程序员的数学【线性代数基础】(一)
|
机器学习/深度学习 人工智能 程序员
程序员的数学【线性代数基础】(二)
本文其实值属于:程序员的数学【AIoT阶段二】 的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 线性代数基础,在机器学习中经常会有矩阵、向量的定义以及计算,是公式定义、推导中必不可少的一部分内容,很多基础概念的定义中都用到了向量的概念,有关线性代数,
165 0
程序员的数学【线性代数基础】(二)
|
机器学习/深度学习 程序员
程序员的数学【微积分基础】(二)
本文其实值属于:程序员的数学【AIoT阶段二】 的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 微积分基础,微积分是公式推导的基础,如果你也关注我的专栏:西瓜书读书笔记,里面对公式进行详细推导的过程中,运用到了大量的 导数,积分,身为一名程序员,我们务必掌握一些必备的数学知识。
248 0
程序员的数学【微积分基础】(二)
|
机器学习/深度学习 程序员
程序员的数学【微积分基础】(一)
本文其实值属于:程序员的数学【AIoT阶段二】 的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 微积分基础,微积分是公式推导的基础,如果你也关注我的专栏:西瓜书读书笔记,里面对公式进行详细推导的过程中,运用到了大量的 导数,积分,身为一名程序员,我们务必掌握一些必备的数学知识。
311 0
程序员的数学【微积分基础】(一)
|
程序员
程序员的数学【概率论】(二)
本文其实值属于:程序员的数学【AIoT阶段二】 的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 概率论
243 0
程序员的数学【概率论】(二)
|
机器学习/深度学习 算法 数据挖掘
程序员的数学【概率论】(一)
本文其实值属于:程序员的数学【AIoT阶段二】 的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 概率论
292 0
程序员的数学【概率论】(一)
|
机器学习/深度学习 程序员
程序员的数学【概率论】(三)
本文其实值属于:程序员的数学【AIoT阶段二】 的一部分内容,本篇把这部分内容单独截取出来,方便大家的观看,本文介绍 概率论
154 0
程序员的数学【概率论】(三)