pca原理

目录

一、引言

二、PCA原理

三、PCA应用

四代码实现

五、总结分析


摘要:主成分分析(PCA)是一种常用的数据降维技术,通过保留数据集中的主要特征分量来简化模型。本文介绍了PCA的基本原理、应用场景以及在Python中的实现方法。

一、引言


        在数据分析和机器学习领域,我们经常遇到高维数据集,其中包含大量的变量。这些变量可能之间存在相关性,导致数据冗余和复杂性增加。主成分分析(Principal Component Analysis,PCA)是一种有效的数据降维方法,它可以将多维数据映射到较低维度,同时保留数据集中的主要特征分量。PCA在很多领域都有广泛的应用,例如图像处理、语音识别、机器学习等。

二、PCA原理


        PCA的基本思想是通过线性变换将原始数据映射到新的坐标系统中,从而简化数据集。这个变换过程涉及到以下几个步骤:

1. 数据中心化:将原始数据集减去其均值得到X,使得数据的均值为0。

2. 计算协方差矩阵:计算数据集的协方差矩阵,表示数据变量之间的相关性。S=X⋅XT
 

3. 特征值和特征向量:求解协方差矩阵的特征值和特征向量。特征值表示数据分布的方差,特征向量表示数据分布的方向。

4. 选择主成分:根据特征值的大小,降序排列特征值,并选择前k个最大的特征值对应的特征向量作为主成分。这些主成分能够解释数据集的大部分方差。

5. 重建数据:使用选定的主成分重建数据,得到降维后的数据集。

三、PCA应用


PCA在许多领域都有广泛的应用,以下是一些常见的应用场景:

1. 图像处理:通过PCA可以提取图像的主要特征,从而进行图像压缩、降噪等处理。

2. 语音识别:PCA可以用于语音信号处理,提取语音信号的主要成分,从而提高语音识别的准确率。

3. 机器学习:PCA可以作为预处理步骤,降低数据维度,提高机器学习模型的性能。

四代码实现

结果展示

from sklearn import datasets
import matplotlib.pyplot as plt
import numpy as np
from sklearn.decomposition import PCA
from pylab import mpl
mpl.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题
# 鸢尾花的数据集
iris = datasets.load_iris()
print(iris)
 
X=iris['data']
y=iris['target']
print('Before pca: \n', X[:3,:])# 前三行,所有列
 
pca_1 = PCA(n_components=2) # 指定主成分数量初始化  将数据降为2维
X_red_1 = pca_1.fit_transform(X) # fit并直接得到降维结果 
 
# 这里只展示前三行的结果以示对比
print('After pca: \n', X_red_1[:3, :],'\n')
 
# 查看各个特征值所占的百分比,也就是每个主成分保留的方差百分比
print('方差百分比: ', pca_1.explained_variance_ratio_)    
 
# 当前保留总方差百分比;
 
print('总方差百分比: ',pca_1.explained_variance_ratio_.sum(),'\n')
 
# 线性变换规则
print('components_: \n', pca_1.components_)
#结果可视化
plt.figure(figsize=(6,6))    
for i in range(2):
    plt.scatter(x=X_red_1[np.where(y==i),:][0][:,0], y=X_red_1[np.where(y==i),:][0][:,1], alpha=0.8, label='效果%s' % i)
plt.legend()
plt.show()

五、总结分析

  本次实验通过PCA实现特征提取(降维)。PCA算法可以简化模型或是对数据进行压缩,同时最大程度的保持了原有数据的信息,最后的结果只与数据有关。各主成分之间正交,可以消除原始数据成分间对的影响。但是PCA是基于线性变换,假设数据是线性相关的。对于非线性关系较强的数据,PCA可能不够有效,需要使用非线性降维方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值