主题:PCA简介及其应用
PCA,即主成分分析(Principal Component Analysis),是一种常用的数据降维算法。它可以将高维数据转换为低维数据,同时尽量保留原有数据的信息。本文将介绍PCA的基本原理、应用场景以及如何使用Python实现PCA算法。
一、PCA原理
PCA的主要思想是通过线性变换将高维数据映射到一个低维空间中。这个变换的目的是尽可能地减小数据的维度,同时尽可能地保留原始数据的信息。具体来说,PCA会找到一组新的坐标轴,使得数据在这些坐标轴上的投影方差最大。这些新的坐标轴被称为主成分,它们是原始数据的线性组合。
二、PCA应用场景
PCA在数据分析和机器学习中有广泛的应用,以下是几个常见的应用场景:
-
数据降维:PCA可以将高维数据转换为低维数据,减小计算量和存储空间。
-
数据可视化:PCA可以将数据投影到二维或三维空间中,方便数据的可视化。
-
特征提取:PCA可以提取出最重要的特征,减小噪声对数据的影响,提高模型的准确性。
三、Python实现PCA算法
import matplotlib.pyplot as plt import numpy as np from sklearn.datasets import load_iris #导入数据 iris = load_iris( ) #公开数据集 X=iris.data # print(X) #去中心化 X=X-X.mean(axis=0) #相关系数矩阵 X_cov=np.cov(X.T,ddof=0) print(X_cov) #计算特征值和特征向量 m, k = np.linalg.eig(X_cov) print(m) #特征值 print(k) #特征向量 # 计算主成分贡献率以及累计贡献率 sum_lambda = np.sum(m) # 特征值的和 print(sum_lambda) f = np.divide(m, sum_lambda) # 每个特征值的贡献率(特征值 / 总和) print(f) #依情况而定选择维数 # 前两大特征值对应的特征向量为: m1 = k.T[0] print(m1) m2 = k.T[1] print(m2) # 计算主成分值已去中心化 z1 = np.dot(X, m1) # print(m1) z2 = np.dot(X, m2) # print(m2) # 输出降维后的结果(已去中心化) mk = np.array([m1, m2]) # print(mk) print(type(mk)) print(mk.T) #第一主成分 #第二主成分 #绘制贡献率图像 lo=sum_lambda #特征值的和 exp=[(i/lo) for i in sorted(W,reverse=True)] #按照降序排列特征值 var=np.cumsum(exp) #累计贡献度 plt.bar(range(1,len(exp)+1),exp,alpha=0.5,align='center',label='individual var') #绘制柱状图 plt.step(range(1,len(exp)+1),var,where='mid',label='individual var') #绘制阶梯图 plt.ylabel('贡献率') plt.xlabel('主成分') plt.legend(loc='best') plt.show( )