吴程锴:PCA与NMF降维实践及可视化

需积分: 0 0 下载量 171 浏览量 更新于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这两种降维方法,让学生理解了如何利用这些技术减少数据的复杂性,同时在可视化中观察到数据的结构。这对于理解数据的内在规律和进行后续分析具有重要意义。