PCA算法简述

PCA算法简述深度学习基础知识和各种网络结构实战 PCA 算法简述深度学习前言一 PCA 算法步骤二 python 实现 PCA 算法总结前言 PCA 算法 PrincipalCom 即主元分析法 是一种线性降维的算法 一 PCA 算法步骤 1 数据集为 x1 x2 xn 的多维向量 设维度为 m 维的话 考可以将数据集写出 m 行 n 列的的矩阵 X mn 2 如果要将其降维 k 维则 3 对数据集的每一个数据 每一位特征 每一行 减去各自特征的平均值 即对数据中的每一个特征维度进行零均值化

深度学习

基础知识和各种网络结构实战 …


前言

PCA算法(Principal Component Analysis)即主元分析法,是一种线性降维的算法。


一、PCA算法步骤

1.数据集为{x1,x2…xn}的多维向量,设维度为m维的话,考可以将数据集写出m行n列的的矩阵X(mn)
2.如果要将其降维k维则:
3.对数据集的每一个数据,每一位特征(每一行)减去各自特征的平均值,即对数据中的每一个特征维度进行零均值化,得到归一化后的矩阵B
4.求协方差矩阵C=C=1/n






B*B.T
5.分解协方差矩阵C的特征值和特征向量
6.将分解后的特征值从大到小排序,选择其中最大的k个,然后将这些特征值对应的k个特征向量作为行向量组成特征向量矩阵P
7.得到降维后的结果:Y=PX






二、python实现PCA算法

import numpy as np #对数据中心化(零均值化)处理 def Centralization_function(data): ''' :param data: data为{x1,x2...xn}的多维向量,设维度为m维的话,考可以将数据集写出m行n列的的矩阵A(m*n) :return: 矩阵data-data中相应向量的平均数 ''' zero_mean_matrix=np.nanmean(data,axis=0) #print(data-zero_mean_matrix) #axis=0,那么输出矩阵是1行,求每一列的平均(按照每一行去求平均);axis=1,输出矩阵是1列,求每一行的平均(按照每一列去求平均)。 return data-zero_mean_matrix def pca_svd(data,k): new_data=Centralization_function(data) Cov_mat=1/k*np.dot(new_data.T,new_data) U,s,V=np.linalg.svd(Cov_mat) pc=np.dot(new_data,U) return pc[:,0] def test(): data=np.array( [[2.5,2.4],[0.5,0.7],[2.2,2.9],[1.9,2.2],[3.1,3.0],[2.3,2.7],[2,1.6],[1,1.1],[1.5,1.6],[1.1,0.9]] ) result_eig=pca_svd(data,1) print(result_eig) if __name__=='__main__': test() 

总结

期待大家和我交流,留言或者私信,一起学习,一起进步!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/229983.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月16日 下午3:24
下一篇 2026年3月16日 下午3:25


相关推荐

  • 十六进制颜色码大全(带图)

    十六进制颜色码大全(带图)英文代码 形像颜色 HEX 格式 RGB 格式 LightPink 浅粉色 FFB6C1255 182 193Pink 粉红 FFC0CB255 192 203Crimson 猩红 DC143C220 20 60LavenderBl 脸红的淡紫色 FFF0F5255 240 245PaleViole 苍白的紫罗兰红色 DB 112 147HotPink 热情的粉红 FF69B425

    2026年3月26日
    3
  • scrapy 安装步骤[通俗易懂]

    scrapy 安装步骤[通俗易懂]pipinstallpywin32pipinstalllxmlpipinstallwheelpipinstalltwisted安装包下载地址:http://www.lfd.uci.edu/~gohlke/pythonlibs/pipinstallscrapy

    2026年1月15日
    4
  • Java 多线程(超详细)

    Java 多线程(超详细)多线程学习思路:为什么学习线程?为了解决CPU利用率问题,提高CPU利用率。=》什么是进程?什么是线程?=》怎么创建线程?有哪几种方式?有什么特点?=》分别怎么启动线程?=》多线程带来了数据安全问题,该怎么解决?=》怎么使用synchronized(同步)决解?=》使用同步可能会产生死锁,该怎么决解?=》线程之间是如何通信的?=》线程有返回值吗?该如何拿到?=》怎么才能一次性启动几百上千个的线程?线程的概念什么是进程进程是操作系统中正在执行的不同的应用程序,例如:我

    2022年7月9日
    22
  • ActiveMQ入门系列三:发布/订阅模式

    在上一篇《ActiveMQ入门系列二:入门代码实例(点对点模式)》中提到了ActiveMQ中的两种模式:点对点模式(PTP)和发布/订阅模式(Pub&Sub),详细介绍了点对点模式并用代码

    2022年2月16日
    74
  • include用法PHP,php之include的使用[通俗易懂]

    服务器端包含(SSI)用于创建可在多个页面重复使用的函数、页眉、页脚或元素。PHPinclude和require语句在PHP中,您能够在服务器执行PHP文件之前把该文件插入另一个PHP文件中。include和require语句用于在执行流中向其他文件插入有用的的代码。include和require很相似,除了在错误处理方面的差异:require会产生致命错误…

    2022年4月14日
    64
  • maven详细教程_maven的安装与配置

    maven详细教程_maven的安装与配置学习maven的使用,看到一篇很实用的入门教程(菜鸟级入门)2007-08-2814:01:04标签:maven职场休闲一、前言早就知道maven在java项目的管理方面名声显赫,于是就想着学习掌握之,于是查阅了大量文档。发现这些文档的作者都是java的大腕,大多都是站在掌握了一定maven基础的角度上进行介绍,让我这初学者看的云里雾里不…

    2025年10月7日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号