专业IT网络知识平台,分享IT百科知识、生活百科知识解答!

易企推科技
易企推科技

主成分分析(PCA)

来源:小易整编  作者:小易  发布时间:2023-08-29 02:22
摘要:主成分分析也称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。在统计学中,主成分分析(principalcomponentsanalysis,PCA)是一种简化数据集的技术。它是一个线性变换。这个变换把数据变换到一个新的...

主成分分析也称主分量分析,旨在利用降维的思想,把多指标转化为少数几个综合指标。在统计学中,主成分分析(principal components analysis,PCA)是一种简化数据集的技术。它是一个线性变换。这个变换把数据变换到一个新的坐标系统中,使得任何数据投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。主成分分析经常用减少数据集的维数,同时保持数据集的对方差贡献最大的特征。这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面。但是,这也不是一定的,要视具体应用而定。

主成分分析(PCA)

操作方法 01

主成分分析的目的在于降维,使用最少的数据来表示一个样本。让方差大的维度或者说特征来代表样本。

02

首先需要对数据进行标准化。 m=mean(data,axis=0) s=std(data,axis=0) data=(data-m)/s

03

获得协方差矩阵,用于计算变量间的关系。 获得主要变量及其组合。 c=cov(transpose(data)) eigvalues,eigvectors=linalg.eig(c) indexes=argsort(eigvalues) indexes=indexes[::-1] eigvectors=eigvectors[:,indexes] eigvalues=eigvalues[indexes] eigvectors=eigvectors[:,:k]

04

获得处理后的数据,以及计算方差累计值。 x=dot(transpose(eigvectors),transpose(data)) y=(transpose(dot(eigvectors,x))+m)*s print(sum(eigvalues[:k])/sum(eigvalues))

05

import numpy as np from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt from numpy import * x = random.normal(5,.5,1000) y = random.normal(3,1,1000) z=random.normal(0,1,1000) a = x*cos(pi/4) + y*sin(pi/4) b = -x*sin(pi/4) + y*cos(pi/4) c =- z*sin(pi/4) + -y*cos(pi/4) k=1 data=zeros((1000,3)) data[:,0]=a data[:,1]=b data[:,2]=c m=mean(data,axis=0) s=std(data,axis=0) data=(data-m)/s c=cov(transpose(data)) eigvalues,eigvectors=linalg.eig(c) indexes=argsort(eigvalues) indexes=indexes[::-1] eigvectors=eigvectors[:,indexes] eigvalues=eigvalues[indexes] eigvectors=eigvectors[:,:k] print(sum(eigvalues[:k])/sum(eigvalues)) x=dot(transpose(eigvectors),transpose(data)) y=(transpose(dot(eigvectors,x))+m)*s fig=plt.figure() ax=fig.add_subplot(111,projection='3d') ax.scatter(y[:,0],y[:,1],y[:,2],c='b',marker='o') ax.set_xlabel('X_label') ax.set_ylabel('Y_label') ax.set_zlabel('Z_label') plt.show() 代码演示,如上。包括数据生成的方法。

06

可以通过改变k值,变换数据,压缩数据。 可视化图形如下。


本文地址:网络知识频道 https://www.hkm168.com/jiqiao/1039361.html,易企推百科一个免费的知识分享平台,本站部分文章来网络分享,本着互联网分享的精神,如有涉及到您的权益,请联系我们删除,谢谢!


网络知识
小编:小易整编
相关文章相关阅读
  • 使用Go语言进行大数据分析的常用技巧

    使用Go语言进行大数据分析的常用技巧

    使用Go语言进行大数据分析的常用技巧随着大数据时代的来临,数据分析成为了各个领域中不可或缺的一环。而Go语言作为一种强大的编程语言,其简洁、高效的特性使得它成为大数据分析的理想选择。本文将介绍一些使用Go语言进行大数据分析常用的技巧,并提供...

  • PHP语言开发中避免死循环及实例分析

    PHP语言开发中避免死循环及实例分析

    在php语言开发中,死循环是一种常见的错误类型。死循环的出现会导致程序无法正常执行,也会占用大量的系统资源,甚至导致系统崩溃。因此,避免死循环是php程序开发中非常重要的一环。什么是死循环?死循环指的是程序中的一个循环结构,当条件永远为真时...

  • ThinkPHP5中使用 Auth2进行验证的过程分析

    ThinkPHP5中使用 Auth2进行验证的过程分析

    本篇文章给大家分享的内容是关于thinkphp5中使用autb进行验证的过程分析,有需要的朋友可以参考一下,希望能帮助到大家。在tp上实现的autb验证的,在网上发现笔记很少,不像yii,故在此发表一下笔记,用来帮助有相关需求的朋友P...

  • npcap是什么软件

    npcap是什么软件

    npcap是一个网络数据包抓包工具,是winpcap的改进版;它支持ndis6技术、“只允许管理员administrator”访问npcap、与winpcap兼容或并存两种模式;支持windows平台的回环数据包采集和发送。本教程操作环境...

  • Vue路由守卫详解及其应用场景分析

    Vue路由守卫详解及其应用场景分析

    随着前端技术的不断发展,vue作为一款开发框架也越来越受到开发者们的欢迎。而vue的路由机制也是vue框架中不可或缺的一部分。路由系统能够帮助开发人员构建复杂的单页应用,同时也提供了一种灵活的方式来管理页面状态和用户导航。在这种情况下,vu...

  • 如何分析EIGRP协议

    如何分析EIGRP协议

    1、eigrp协议简述EIGRP(EnhancedIneriorGatewayRoutingProtocol,增强型内部网关路由协议)是一个平衡混合型路由协议,它融合了距离矢量和链路状态两种路由协议的优点,也是CISCO的私有协议。...

  • 什么是OPCache?如何使用OPCache提升PHP的性能?

    什么是OPCache?如何使用OPCache提升PHP的性能?

    本篇文章带大家了解一下opcache,详细介绍一下使用opcache提升php的性能的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。对于PHP这样的解释型语言来说,每次的运行都会将所有的代码进行一次加载解析,这样...

  • 怎么分析反射型XSS

    怎么分析反射型XSS

    反射型xss是指应用程序通过web请求获取不可信赖的数据,在未检验数据是否存在恶意代码的情况下,便将其传送给了web用户。反射型xss一般由攻击者构造带有恶意代码参数的url,当url地址被打开时,特有的恶意代码参数被...

  • 周排行
  • 月排行
  • 年排行

精彩推荐