首页 > 编程语言 >Python实现PCA(Principal Component Analysis)

Python实现PCA(Principal Component Analysis)

时间:2022-09-02 22:23:59浏览次数:54  
标签: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
From: https://www.cnblogs.com/YanzhanCode/p/hello.html

相关文章

  • Python学习:import的正确用法
    import语句用来导入其他python文件(称为模块module),使用该模块里定义的类、方法或者变量,从而达到代码复用的目的。将要建立文件的结构为:Tree|____m1.py|____m2.py|___......
  • python随机值生成的常用方法
    一、随机整数1.包含上下限:[a,b]importrandom#1、随机整数:包含上下限:[a,b]foriinrange(10):print(random.randint(0,5),end="|")查看运行结果:2.不包含上......
  • Python操作Excel
    数据处理是Python的一大应用场景,而Excel则是最流行的数据处理软件。因此用Python进行数据相关的工作时,难免要和Excel打交道。Python处理Excel常用的系列库有:xlr......
  • Python入门系列(八)日期时间、数学、json
    日期时间Python中的日期本身不是数据类型,但我们可以导入一个名为datetime的模块,将日期作为日期对象使用。importdatetimex=datetime.datetime.now()print(x)日期......
  • python脚本获取网页第3方登录的cookies
    以企业微信tapd网站为例,登录需要通过企业微信扫码,本文将讲述通过python脚本实现获取第3方登录cookies并将其保存到pc本地的方法,示例代码如下:fromseleniumimportwebdri......
  • python如何截长图
    网上查到有个第3方接口(网页截屏大师)可以实现截取网页长图,只能针对部分网站调用首先,先在https://www.screenshotmaster.com/注册一个账号,在用户中心获取到一个唯一的Token......
  • Python 报错:int() can't convert non-string with explicit base
    背景今天python操作二进制然后报错,记录一下>>>int(101,2)Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>TypeError:int()can'tconver......
  • python实现企业微信机器人自动发消息
    一)创建企业微信群机器人1)先创建一个测试用临时对话群操作步骤:先在手机端打开企业微信,点击右上角+按钮->发起群聊->联系人中选择2人点击确定,即可创建一个临时对话群2......
  • Python之DataFrame基础知识点
    https://blog.csdn.net/u012856866/article/details/118936961?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166210446116782391824184%2522%252C%2522scm%2......
  • Python源码学习-Objects类型
    目录简介类型定义类型对象对象操作缓存池本文基于Python3.10.4。简介在python中,有两种类型可以保存bytes(字节)类型的数据。分别是bytes与bytearray。其中bytearray支持修......