吴程锴:PCA与NMF降维实践及可视化
需积分: 0 182 浏览量
更新于2024-08-04
收藏 2.12MB DOCX 举报
本次上机作业涉及两个主要的机器学习主题,即PCA(主成分分析)在高维数据可视化中的应用和NMF(非负矩阵分解)在降维任务中的使用。首先,我们来详细解读这两个知识点。
**1. PCA实现高维数据可视化(作业26)**
PCA是一种常用的数据预处理技术,它通过线性变换将原始高维数据投影到一个低维空间,同时保留数据的主要特征。在提供的代码中,使用了`sklearn`库中的`PCA`类。具体步骤如下:
- `import matplotlib.pyplot as plt`:引入绘图库用于可视化。
- `from sklearn.decomposition import PCA`:导入PCA模块。
- `from sklearn.datasets import load_iris`:加载鸢尾花数据集,这是一个经典的多分类问题,数据维度较高。
- `data=load_iris()`:获取数据集,包含特征和目标变量。
- `pca = PCA(n_components=2)`:创建PCA对象,设置降维到2个主成分。
- `reduced_x = pca.fit_transform(x)`:对数据进行降维,得到降维后的特征向量。
- 循环遍历降维后的数据,根据目标变量`y`将样本分为三个类别(红色的setosa、蓝色的versicolor和绿色的virginica),并分别绘制散点图。
- `plt.scatter()`函数用于绘制不同类别的样本,使用不同的颜色和标记表示。
通过这个过程,我们可以直观地看到不同类别的样本在二维平面上的分布情况,有助于理解和探索数据的内在结构。
**2. NMF降维(作业27)**
NMF是另一种降维方法,它将数据分解为两个非负矩阵的乘积,通常用于提取数据的潜在主题或特征。在这个例子中,使用的是`sklearn`库中的`NMF`,结合Olivetti人脸数据集,展示如何在人脸识别领域应用NMF进行降维。
- `from sklearn import decomposition`:导入NMF模块。
- `from sklearn.datasets import fetch_olivetti_faces`:加载Olivetti人脸数据集,包含64x64大小的图像。
- `faces = dataset.data`:获取人脸图像数据。
- `n_components`变量设置为降维后的子空间维度,这里与人脸图像的行数和列数相同。
NMF算法会试图找到一种方式,使得数据可以近似为两个非负矩阵(一个特征矩阵和一个权重矩阵)的乘积,从而提取出人脸的可识别特征。然而,由于代码没有实际执行NMF,这部分内容展示了理论上的用法,实际应用时还需要调用`NMF.fit()`方法并可视化降维后的结果。
总结来说,本次上机作业通过实践PCA和NMF这两种降维方法,让学生理解了如何利用这些技术减少数据的复杂性,同时在可视化中观察到数据的结构。这对于理解数据的内在规律和进行后续分析具有重要意义。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2022-08-03 上传
2022-08-03 上传
2022-08-08 上传
2022-08-03 上传
2022-08-08 上传
2022-08-08 上传
江水流春去
- 粉丝: 50
- 资源: 352
最新资源
- aggregate_resources:与使用传统循环相比,此仓库包含一个汇总参数示例。 该演示是使用eos_vlan模块在Arista vEOS上完成的
- spatial_rcs
- socket_handshake
- CubeApi
- 文件时间批量修改工具(指定时间随机)
- ncomatlab代码-x5chk2021:x5chk2021
- python-math-solver:用Python编写的定理证明者求解器
- laravel-grid-app:Laravel应用程序展示leantonylaravel-grid软件包功能
- Tag-Based-File-Manager:用python编写的基于标签的文件管理器
- kxmlrpcclient:KXMLRPCClient-帮助使用XML-RPC API的库
- ProjetosJava
- 英语-
- ncomatlab代码-pyldas:土地数据同化系统(LDAS)的python包
- dictionary-app
- COSC-473-项目
- ExampleOfiOSLiDAR:iOS ARKit LiDAR的示例