2024年最全人工智能(无监督学习-降维)——非负矩阵分解(NMF(1),2024年最新面试必背

最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

👉实战案例👈

学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。

因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

4.1 代码

4.2 结果展示


1 概念


1.1 非负矩阵分解

( Non-negative Matrix Factorization , NMF ):是在矩阵中所有元素均为非负数约束条件之下的矩阵分解方法。

1.2 基本思想

给定一个非负矩阵 V , NMF 能够找到一个非负矩阵 W 和一个非负矩阵H ,使得矩阵 W 和 H 的乘积近似等于矩阵 V 中的值。

1.3 W矩阵

基础图像矩阵,相当于从原矩阵V 中抽取出来的特征

1.4 H矩阵

系数矩阵。NMF能够广泛应用于图像分析、文本挖掘和语音处理等领域。

上图摘自 NMF 作者的论文, 左侧 为 W矩阵 ,可以看出从原始图像中抽取出来的 特征 , 中间 的

是 H矩阵 。可以发现乘积结果与原结果是很像的。

2 矩阵分解优化目标


最小化 W 矩阵 H 矩阵的乘积和原始矩阵之间的差别,目标函数如下:

基于 KL 散度的优化目标,损失函数如下:

(公式的推导略)

3 案例


NMF人脸数据特征提取:

**目标:**已知Olivetti人脸数据共400个,每个数据是64*64大小。由于NMF分解得到的 W矩阵相

当于从原始矩阵中提取的特征 ,那么就可以使用NMF对400个人脸数据进行特征提取。

通过设置k的大小,设置提取的特征的数目。在本实验中设置k=6,随后将提取的特征以图像的形式展示出来。

4 代码实现(Python)


在sklearn库中,可以使用sklearn.decomposition.NMF加载NMF算法,主要参数有:

• n_components:用于指定分解后矩阵的单个维度k;

• init:W矩阵和H矩阵的初始化方式,默认为‘nndsvdar’。

4.1 代码

#1. 建立工程,导入sklearn相关工具包:=

from numpy.random import RandomState #加载RandomState用于创建随机种子

import matplotlib.pyplot as plt

from sklearn.datasets import fetch_olivetti_faces #加载Olivetti人脸数据集导入函数

from sklearn import decomposition #加载PCA算法包

from pylab import *

import matplotlib; matplotlib.use(‘TkAgg’)

mpl.rcParams[‘font.sans-serif’] = [‘SimHei’]

mpl.rcParams[‘axes.unicode_minus’] = False

#==2. 设置基本参数并加载数据:=

n_row, n_col = 2, 3 #设置图像展示时的排列情况,如右图

n_components = n_row * n_col #设置提取的特征的数目

image_shape = (64, 64) #设置人脸数据图片的大小

#=3.下载人脸数据:============

dataset = fetch_olivetti_faces(shuffle=True, random_state=RandomState(0)) #加载数据,并打乱顺序

faces = dataset.data #加载数据,并打乱顺序

#=4. 设置图像的展示方式:======

def plot_gallery(title, images, n_col=n_col, n_row=n_row):

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值