目录
8.1主成分分析
8.11主成分分析介绍
主成分分析PCA是一种广泛使用的数据降维技术,用于减少数据集的维数,同时尽可能保留数据的主要信息。它通过将数据投影到一个新的正交坐标系中,使得新的坐标系中的每个轴(主成分)都是原始数据集中最大方差方向的线性组合。PCA的应用包括数据压缩、特征提取、数据可视化等。
8.12主成分分析PCA算法流程
(1)对所有的样本进行中心化处理,满足均值为0的分布
(2)计算样本的协方差矩阵
(3)对矩阵进行特征值分解
(4)取出最大的P个特征值对应的特征向量(),将所有的特征向量标准化后,组成特征向量矩阵(投影矩阵)W;
(5)对样本集中的每一个样本x(i),转化为新的样本
(6)得到输出样本集X = (z(1),z(2),z(3),...,z(m))。
8.13PCA优缺点
优点:PCA能有效减少数据的维度,同时保留大部分变异性,有助于去除噪声;通过正交转换消除了数据的相关性,有助于后续模型的处理和性能提升。
缺点:降维过程中可能会丢失一部分信息,特别是当去除的成分含有重要信息时。
8.2PCA算法实现
8.22数据准备
本次实验所导入的包:
import numpy as np
通过导入numpy包目的是利用其强大的数值计算功能来执行PCA所需的各种操作,提供了高效的数组操作和线性代数计算功能。
本次实验所准备的数据集
data = np.array([
[2.5, 2.4], [0.5, 0.7], [2.2, 2.9], [1.9, 2.2], [3.1, 3.0],
[2.3, 2.7], [2.0, 1.6], [1.0, 1.1], [1.5, 1.6], [1.1, 0.9]
])
本次实验利用PCA降维主要是通过将已准备好的二维的数据集,得到降到一维后的数据集
8.23算法实现
def PCA(data,r):
data = np.float32(np.mat(data))
rows,cols = np.shape(data)
data_mean = np.mean(data,0)
A=data-np.tile(data_mean,(rows,1))
C = A*A.T
D,V=np.linalg.eig(C)
V_r=V[:,0:r]
V_r=A.T*V_r
for i in range(r):
V_r[:,i]=V_r[:,i]/np.linalg.norm(V_r[:,i])
final_data = A*V_r
return final_data,data_mean,V_r
data = np.float32(np.mat(data))
rows,cols = np.shape(data)
data_mean = np.mean(data,0)
A=data-np.tile(data_mean,(rows,1))
首先将输入数据转换为NumPy浮点矩阵格式,以确保数据类型一致。接着计算每个特征(列)的均值,结果是一个均值向量。通过减去均值向量,将数据中心化。np.tile用于扩展均值向量,使其与原始数据形状匹配。
图一:中心化后的数据集
C = A*A.T
D,V=np.linalg.eig(C)
V_r=V[:,0:r]
V_r=A.T*V_r
for i in range(r):
V_r[:,i]=V_r[:,i]/np.linalg.norm(V_r[:,i])
final_data = A*V_r
return final_data,data_mean,V_r
中心化后对计算协方差矩阵,这里使用了数据的内积。使用NumPy的linalg.eig函数数计算协方差矩阵的特征值和特征向量。按列选择前r个特征向量作为主成分。并将小矩阵的特征向量转换为大矩阵的特征向量。对特征向量进行归一化处理,使其每列特征向量的长度为1。将数据投影到选择的特征向量上,得到降维后的数据。最后将结果进行返回。
图二:PCA实验结果
8.3实验结果分析与总结
8.31实验结果分析
通过本次实验可以得到:
降维后的数据:降维后的数据保留了原始数据中的主要信息,但减少了维度,从而降低了数据复杂性。
均值向量:均值向量 [1.81,1.91]表示数据集中每个特征的平均值。数据中心化处理确保了降维后的数据是以均值为中心。
特征向量:特征向量 [0.6778733,0.73517866] 表示最大方差方向。降维后的数据是原始数据在这个特征向量方向上的投影。
通过实验可以看出,PCA有效地将原始二维数据集降维到一维。降维后的数据集中保留了原始数据的主要信息,而均值向量和特征向量帮助我们理解数据的变异性方向和中心位置。PCA在减少数据维度的同时,最大程度上保留了数据的方差信息,使得降维后的数据仍然具有代表性。在本次实验中可以认识到PCA主成分分析能够简化数据结构,去除冗余信息,增强数据处理和分析的效率。通过这次实验,我们了解了PCA的基本原理、算法流程以及实际应用过程。
8.32实验结果总结
在本次主成分分析的实验中,学会了人用主成分分析PCA来实现数据降维的基本方法,也对其中所涉及和应用到的协方差矩阵,特征向量分解,有了自己的认识,PCA通过计算数据的协方差矩阵并对其进行特征值分解,找出了数据中方差最大的方向。
总体而言,通过实验不仅学习了PCA的具体实现步骤和算法原理,更重要的是理解了其作为一种经典的数据预处理和分析工具,为我们处理复杂数据和提升分析效率提供了新的思路和方法。