2022年12月4日 SVD学习笔记

​ SVD(Singular Value Decomposition)奇异值分解也是数据降维的一种方式,能够将一个矩阵用三个小矩阵进行分解,分解之后的矩阵比原矩阵存储空间需要的更少,但是信息损失其实不大。

视频地址很清楚

奇异值分解引入

将原始矩阵分解为两个方阵和一个对角矩阵

数据线性变换

  • 拉伸。左乘对角线矩阵相当于对原基坐标进行拉伸

  • 旋转。左乘R正交矩阵相当于旋转

将中间奇异值取前几个就能保留大部分信息,奇异值是从大到小的,越小信息量越小

如何求解SVD分解?
在这里插入图片描述

上述过程可以通过这篇博客的SVD求解实例走一遍,奇异值分解用于压缩很形象的描述了SVD的作用

import numpy as np
from numpy import linalg as la

A = np.array([[1,5,7,6,1],[2,1,10,4,4],[3,6,7,5,2]])
U, S, VT = la.svd(A)
Sigma = np.zeros(np.shape(A))

Sigma[:len(S),:len(S)] = np.diag(S)  # 生成奇异值矩阵,该矩阵的对角元素为奇异值

print('左奇异值矩阵:\n', U)
print('奇异值:', S)
print('奇异值矩阵:\n', Sigma)
print('右奇异值矩阵的转置:\n', VT)
print('--------------------------------------')
# 利用SVD重构矩阵
B = U.dot(Sigma.dot(VT))
print('原矩阵A:\n', A)
print('重构后的矩阵B:\n', B)
print('原矩阵A与重构后的矩阵B是否相同', np.allclose(A,B))

利用SVD对图像进行压缩的代码

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蒋的学习笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值