ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Python实现PCA(Principal Component Analysis)

2022-09-02 22:33:12  阅读:177  来源: 互联网

标签:plt 特征向量 Python Component Analysis num np PCA data


1.基本原理

PCA是机器学习和统计学领域一类特征降维算法。由于样本数据往往会有很多的特征,这会带来以下挑战:

  1. 样本的维度超过3维则无法可视化;
  2. 维度过高可能会存在特征冗余,不利于模型训练,等等;
    而PCA的目的就是在降低特征维度的同时,最大程度地保证原始信息的完整。

2.案例

点击查看代码
import numpy as np
import matplotlib.pyplot as plt
#代降维数据点的构建
num = 20
x = np.linspace(-5,5,num)
y = x + np.random.rand(num)
data = np.row_stack((x,y))  #2*20
plt.scatter(x,y)

#计算数据集的协方差矩阵
cov = (1/num) * np.dot(data,data.T)
#求解协方差的特征值与特征向量
e,v = np.linalg.eig(cov)
print('特征值:',e)
print('特征向量',v)

#利用特征向量组成的矩阵对原始数据进行线性变换
trans_data = np.dot(v,data)
plt.scatter(trans_data[0],trans_data[1])
plt.ylim(-4,4)
plt.show()

image

如图所示,原始二维数据具有很强的线性相关性,降维后的数据在y方向上几乎为常数。直观来看,原本左图是以x和y轴为坐标轴,而在pca降维后的数据可以看做是以y=x为x轴,并且其另外一个方向上的数据因为变化不大可以被删除,达到降维的目的。

标签:plt,特征向量,Python,Component,Analysis,num,np,PCA,data
来源: https://www.cnblogs.com/YanzhanCode/p/hello.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有