PCA降维算法

主题:PCA简介及其应用

PCA,即主成分分析(Principal Component Analysis),是一种常用的数据降维算法。它可以将高维数据转换为低维数据,同时尽量保留原有数据的信息。本文将介绍PCA的基本原理、应用场景以及如何使用Python实现PCA算法。

一、PCA原理

PCA的主要思想是通过线性变换将高维数据映射到一个低维空间中。这个变换的目的是尽可能地减小数据的维度,同时尽可能地保留原始数据的信息。具体来说,PCA会找到一组新的坐标轴,使得数据在这些坐标轴上的投影方差最大。这些新的坐标轴被称为主成分,它们是原始数据的线性组合。

二、PCA应用场景

PCA在数据分析和机器学习中有广泛的应用,以下是几个常见的应用场景:

  1. 数据降维:PCA可以将高维数据转换为低维数据,减小计算量和存储空间。

  2. 数据可视化:PCA可以将数据投影到二维或三维空间中,方便数据的可视化。

  3. 特征提取: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( )
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值