专栏首页null的专栏简单易学的机器学习算法——SVD奇异值分解

简单易学的机器学习算法——SVD奇异值分解

一、SVD奇异值分解的定义

二、SVD奇异值分解与特征值分解的关系

    特征值分解与SVD奇异值分解的目的都是提取一个矩阵最重要的特征。然而,特征值分解只适用于方阵,而SVD奇异值分解适用于任意的矩阵,不一定是方阵。

三、SVD奇异值分解的作用和意义   

五、实验的仿真

    我们在手写体上做实验,原始矩阵为

原始矩阵

对应的图像为

对应图像

经过SVD分解后的奇异值矩阵为

部分奇异值矩阵

取前14个非零奇异值

前14个非零奇异值

还原原始矩阵B,还原后的图像为

还原后的图像

对比图像

对比图像

MATLAB代码

%% 测试奇异值分解过程
load data.mat;%该文件是做好的一个手写体的图片
B = zeros(28,28);%将行向量重新转换成原始的图片

for i = 1:28
    j = 28*(i-1)+1;
    B(i,:) = A(1,j:j+27);
end

%进行奇异值分解
[U S V] = svd(B);

%选取前面14个非零奇异值
for i = 1:14
    for j = 1:14
        S_1(i,j) = S(i,j);
    end
end

%左奇异矩阵
for i = 1:28
    for j = 1:14
        U_1(i,j) = U(i,j);
    end
end

%右奇异矩阵
for i = 1:28
    for j = 1:14
        V_1(i,j) = V(i,j);
    end
end

B_1 = U_1*S_1*V_1';

%同时输出两个图片
subplot(121);imshow(B);
subplot(122);imshow(B_1);

$(".MathJax").remove();

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 简单易学的机器学习算法——SVD奇异值分解

        特征值分解与SVD奇异值分解的目的都是提取一个矩阵最重要的特征。然而,特征值分解只适用于方阵,而SVD奇异值分解适用于任意的矩阵,不一定是方阵。

    zhaozhiyong
  • 简单易学的机器学习算法——线性支持向量机

    一、线性支持向量机的概念     线性支持向量机是针对线性不可分的数据集的,这样的数据集可以通过近似可分的方法实现分类。对于这样的数据集,类似线性可分支持向量机...

    zhaozhiyong
  • 简单易学的机器学习算法——Rosenblatt感知机的对偶解法

        在博文“简单易学的机器学习算法——Rosenblatt感知机”中介绍了Rosenblatt感知机的基本概念。Rosenblatt感知机是针对线性可分问题...

    zhaozhiyong
  • Ajax+Servlet实现智能搜索框

    技术从心
  • 从源码上分析 LinkedList(附图)

    一份执着✘
  • 如何做到企业合规看这里——介绍Salesforce Shield

    互联网的创建是为了共享信息。但是随着互联网的应用已经扩大到包括电子商务和企业软件领域,很明显,并不是所有的信息都是要与所有人共享。很多行业,如金融服务、医疗保健...

    臭豆腐
  • 收好这份脱单攻略!想要在狗年摆脱「单身狗」名号,就靠它了

    一年一度的新春佳节,总是伴随着七大姑八大姨个人问题的一声声殷切问候;在新春之前「截胡」的情人节,又总是伴随着现充们花样百出的屠狗大招。

    知晓君
  • Oracle参数解析(nls_calendar)

    前面介绍了Oracle的基本参数,从这节开始讲其他的参数,参数从v$parameter中提取

    bsbforever
  • RestTemplate的使用和原理你都烂熟于胸了吗?【享学Spring MVC】

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    YourBatman
  • TW洞见 | 敏捷开发中的故事点数

    什么是故事点数? 故事点数是敏捷团队估算用户故事使用的一种主观的计量单位。 故事点数代表了什么? 故事点数代表了完成一个用户故事所要付出的工作量。一些敏捷开发人...

    ThoughtWorks

扫码关注云+社区

领取腾讯云代金券