主成分分析Python代码

对于主成分分析详细的介绍:主成分分析(PCA)原理详解icon-default.png?t=N6B9https://blog.csdn.net/zhongkelee/article/details/44064401

import numpy as np
import pandas as pd'''标准PCA算法'''
def standeredPCA(data,N):                                   #data:数据集DataFrame  N:降维后需要的维数n=data.shape[1]                                         #数据集data的列数,即维度m=data.shape[0]                                         #数据集data的行数colname=list(data.columns)                              #提取列名AVG=[]                                                  #原始各个维度的平均值for i in range(n):avg=0s=list(data[colname[i]])num=len(s)for j in s:avg+=javg=avg/numAVG.append(avg)'''将每一列数据都转换成列表型'''df=[]                                                   #存储每一列的数据for i in range(n):ls=list(data[colname[i]])df.append(ls)'''数据中心化'''for i in range(n):t=df[i]for j in range(len(t)):t[j]=t[j]-AVG[i]'''求特征协方差矩阵'''A=np.zeros((n,n))for i in range(n):for j in range(n):p=df[i]q=df[j]for k in range(m):A[i][j]+=p[k]*q[k]A[i][j]=A[i][j]/(m-1)'''求协方差的特征值和特征向量'''B=np.linalg.eig(A)P=B.eigenvalues                                         #特征值Q=B.eigenvectors                                        #特征向量U=[index for index, value in sorted(list(enumerate(P)), key=lambda x:x[1])]     #对特征值排序输出索引值序列U=sorted(U,reverse=True)                                #特征值从大到小排序的索引值u=[]                                                    #输出排在前N个的索引值for i in range(N):u.append(U[i])r=[]                                                     #需要的特征值t=[]                                                     #需要的特征向量for i in u:r.append(P[i])T=[]for j in Q:T.append(j[i])t.append(T)'''得到通过PCA后获得的N个特征的数据'''W=[]                            #存储通过PCA后得到的每一个特征的数据【列表】for i in range(N):a=[]                        #存储通过PCA的特征数据b=t[i]for j in range(m):          #遍历数据的行f=0for k in range(n):      #遍历数据的列f=f+df[k][j]*b[k]a.append(f)W.append(a)'''输出经过PCA降维处理后得到的N个特征数据'''fdata=pd.DataFrame(W)fdata=fdata.Tprint("经过PCA降维后得到的结果如下:")print(fdata)'''计算特征信息提取率'''sum=0for i in P:sum+=ifsum=0for i in u:fsum+=P[i]PCAprecent=fsum/sumprint("PCA数据特征的信息提取率是:{}".format(PCAprecent))if __name__=="__main__":df = {'x': [2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2, 1, 1.5, 1.1], 'y': [2.4, 0.7, 2.9, 2.2, 3.0, 2.7, 1.6, 1.1, 1.6, 0.9]}data = pd.DataFrame(df)standeredPCA(data, 1)

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/70229.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【iMessage苹果推?IM推送】群控脚本当Apple APNS推送服务器从您的应用程序接吸收注册消息时,它将为您回到一串devicetoken

推荐内容IMESSGAE相关 作者✈️IMEAE推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者✈️IMEAE推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者✈️IMEAE推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者✈️IMEAE推荐内容3.日历推 *** …

QWeb简史

到目前为止&#xff0c;我们的房地产模块的界面设计相当有限。构建列表视图很简单&#xff0c;因为只需要字段列表。表单视图也是如此&#xff1a;尽管使用了一些标记&#xff0c;如<group>或<page>&#xff0c;但在设计方面几乎没有什么可做的。 然而&#xff0c…

vite+vue3项目配置cdn引入在线依赖

采用ejs的方式 安装语法依赖 npm install vite-plugin-ejs -D配置暴露数据 vite.config.js文件&#xff1a; import { fileURLToPath, URL } from node:url import { defineConfig, loadEnv } from vite import vue from vitejs/plugin-vue import vueJsx from vitejs/plug…

MySQL 索引为什么使用 B+ 树,而不使用红黑树 / B 树 ?

面试官问 &#xff1a;索引为什么使用 B 树&#xff0c;而不使用 B 树&#xff0c;不使用红黑树呢 首先 B 树和 B 树 都是多叉搜索树&#xff0c;然后我们先来观察一下 B 树和 B 树的数据结构&#xff1a; B 树的数据结构实现 >> B 树的数据结构实现 >> 【B 树相…

引领行业高质量发展|云畅科技参编《低代码开发平台创新发展路线图(2023)》

8月8日-9日&#xff0c;中国电子技术标准化研究院于北京顺利召开《低代码开发平台创新发展路线图&#xff08;2023&#xff09;》封闭编制会。云畅科技、浪潮、百度、广域铭岛等来自低代码开发平台解决方案供应商、用户方、科研院所等近30家相关单位的40余位专家参与了现场编制…

华为在ospf area 0单区域的情况下结合pbr对数据包的来回路径进行控制

配置思路&#xff1a; 两边去的包在R1上用mqc进行下一跳重定向 两边回程包在R4上用mqc进行下一跳重定向 最终让内网 192.168.10.0出去的数据包来回全走上面R-1-2-4 192.168.20.0出去的数据包来回全走 下面R1-3-4 R2和R3就是简单ospf配置和宣告&#xff0c;其它没有配置&#…

css学习3(三种样式表与样式控制优先级)

1、外部样式表&#xff1a;当样式需要应用于很多页面时&#xff0c;外部样式表将是理想的选择。在使用外部样式表的情况下&#xff0c;你可以通过改变一个文件来改变整个站点的外观。每个页面使用 <link> 标签链接到样式表&#xff0c;也要放到<head>中。 2、外部…

【云原生】【k8s】Kubernetes+EFK构建日志分析安装部署

目录 EFK安装部署 一、环境准备&#xff08;所有主机&#xff09; 1、主机初始化配置 2、配置主机名并绑定hosts&#xff0c;不同主机名称不同 3、主机配置初始化 4、部署docker环境 二、部署kubernetes集群 1、组件介绍 2、配置阿里云yum源 3、安装kubelet kubeadm …

Redis 十大数据类型

Redis数据类型都有哪些&#xff1f; Redis支持丰富的数据类型&#xff0c;那么具体在Redis7中都有哪些数据类型呢&#xff1f;请看下图&#xff1a; 官网介绍&#xff1a;https://redis.io/docs/data-types/。 其中&#xff0c;String、Hash、List、Set、Sorted Set等类型是大…

SkyEye操作指南:连接TI CCS的IDE调试

现代电力电子控制系统的开发中&#xff0c;DSP芯片以其优越的运算性能在控制算法领域得到越来越广泛的应用。传统的DSP开发过程往往需要在完成控制系统仿真与程序设计后&#xff0c;才能根据比对结果进行程序修改&#xff0c;全过程还需要硬件电路工程师的配合&#xff0c;开发…

近 2000 台 Citrix NetScaler 服务器遭到破坏

Bleeping Computer 网站披露在某次大规模网络攻击活动中&#xff0c;一名攻击者利用被追踪为 CVE-2023-3519 的高危远程代码执行漏洞&#xff0c;入侵了近 2000 台 Citrix NetScaler 服务器。 研究人员表示在管理员安装漏洞补丁之前已经有 1200 多台服务器被设置了后门&#x…

HTML(JavaEE初级系列12)

目录 前言&#xff1a; 1.HTML结构 1.1认识HTML标签 1.2HTML文件基本结构 1.3标签层次结构 1.4快速生成代码框架 2.HTML常见标签 2.1注释标签 2.2标题标签&#xff1a;h1-h6 2.3段落标签&#xff1a;p 2.4换行标签&#xff1a; br 2.5格式化标签 2.6图片标签&#…