主成分分析算法

news2024/9/19 13:00:49

一、算法介绍

主成分分析:用较少的综合变量尽可能多地反映原来信息地统计方法

原理:

PCA的主要目标是将特征维度变小,同时尽量减少信息损失。就是对一个样本矩阵,一是换特征,找一组新的特征重新标识;二是减少特征,新特征的数目要远少于原特征的数目

通过PCA将n维原始特征映射到k维(k<n),称这k维特征为主要成分

 

注意:样本方差是除以n-1的  

特征值和特征向量通过软件辅助函数计算

 特征值与特征向量是一一对应的

二、样例

第(6)步的样例如下:

 

说明:此方法一般用于降维,再结合其他方法进行评价。 

三、代码展示 

import pandas as pd
import numpy as np
from scipy import linalg
#scipy是python的科学计算库
#linalg涉及线性方程、线性函数以及它们通过矩阵和向量空间的表示

#读取excel文件的B:G列,除去第一行(标题)
df=pd.read_excel('棉花产量论文作业的数据.xlsx',usecols='C:G')
#df.to_numpy将数据转化为Numpy数组
x=df.to_numpy()
#标准化数据
#np.mean(x, axis=0):计算矩阵 x 的每一列的均值。
#np.std(x, ddof=1, axis=0):计算矩阵 x 的每一列的标准差。其中,ddof=1 表示使用样本标准差(即除以 𝑛−1而不是 n)。
X=(x-np.mean(x,axis=0))/np.std(x,ddof=1,axis=0)
#计算协方差矩阵
R=np.cov(X.T)
#计算特征值和特征向量
eig_val,eig_vec=linalg.eigh(R)
#将特征值数组按降序排列
eig_val=eig_val[::-1]
#将特征向量矩阵的列按降序排列
eig_vec=eig_vec[:,::-1]
#计算主成分的贡献率和累计贡献率
cti_rate=eig_val/sum(eig_val)
#计算累计和
cum_cti=np.cumsum(cti_rate)
#打印结果
print(eig_val)
print(eig_vec)
print(cti_rate)
print(cum_cti)

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

探索Perl的奇妙世界:入门学习与实战指南

一、Perl语言概述 1.1 Perl的起源与发展 Perl&#xff08;Practical Extraction and Reporting Language&#xff09;是一种高级、解释型、动态编程语言&#xff0c;由Larry Wall于1987年发明。Perl的初衷是作为一种文本处理工具&#xff0c;帮助系统管理员在Unix系统中处理报…

grep命令搜索部分命令

首先 然后可以输入&#xff5c;以及grep命令 比如 bjobs| grep "3075*"bjobs| grep "3075"这个结果是这样的&#xff0c;

「12月·长沙」第四届机器人、自动化与智能控制国际会议(ICRAIC 2024)

随着科技的飞速发展&#xff0c;智能机器人在当今社会的重要性愈发凸显。从制造业的自动化生产线&#xff0c;到医疗领域的手术机器人&#xff0c;再到家庭生活中的智能助手&#xff0c;机器人与人工智能的融合正在改变着我们的生产和生活方式。第四届机器人、自动化与智能控制…

反转链表java实现

力扣206 反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 class Solution {public ListNode reverseList(ListNode head) {ListNode pre null;while(head!null){ListNode next head.next;head.nextpre;pre head;head next;}…

matlab仿真 数字信号载波传输(上)

&#xff08;内容源自详解MATLAB&#xff0f;SIMULINK 通信系统建模与仿真 刘学勇编著第七 章内容&#xff0c;有兴趣的读者请阅读原书&#xff09; clear all nsymbol100000;%每种信噪比下的发送符号数 T1;%符号周期 fs100;%每个符号的采样点数 ts1/fs;%采样时间间隔 t0:ts:…

分类常用的评价指标-二分类/多分类

二分类常用的性能度量指标 精确率、召回率、F1、TPR、FPR、AUC、PR曲线、ROC曲线、混淆矩阵 「精确率」查准率 PrecisionTP/(TPFP) 「召回率」查全率RecallTP/(TPFN) 「真正例率」即为正例被判断为正例的概率TPRTP/(TPFN) 「假正例率」即为反例被判断为正例的概率FPRFP/(TNFP)…

GPT-4o Mini:探索最具成本效益的小模型在软件开发中的应用

随着人工智能技术的迅猛发展&#xff0c;自然语言处理&#xff08;NLP&#xff09;领域也取得了显著的进步。OpenAI 最新发布的 GPT-4o Mini 模型&#xff0c;以其卓越的性能和极具竞争力的价格&#xff0c;成为了广大开发者关注的焦点。作为一名长期关注人工智能及其在软件开发…

基于JSP、java、Tomcat三者的项目实战--校园交易网(1)-项目搭建(前期准备工作)

这是项目的初始页面 接下来我先写下我的初始项目搭建 技术支持&#xff1a;JAVA、JSP 服务器&#xff1a;TOMCAT 7.0.86 编程软件&#xff1a;IntelliJ IDEA 2021.1.3 x64 首先我们打开页面&#xff0c;准备搭建项目的初始准备 1.New Project 2.随后点击Next&#xff0c;勾…

自定义 RAG 工作流:在 IDE 中结合 RAG 编排,构建可信的编码智能体

构建编码智能体并非一件容易的事。结合我们在 AutoDev、ArchGuard Co-mate、ChocoBuilder 等智能体项目的经验&#xff0c;我们开始思考在 Shire 语言中提供一种新的 RAG 工作流。结合我们先前构建的 IDE 基础设施&#xff08;代码生成、代码校验、代码执行等接口&#xff09;&…

【SQL 新手教程 1/20】SQL语言MySQL数据库 简介

&#x1f497; 什么是SQL&#xff1f;⭐ (Structured Query Language) 结构化查询语言&#xff0c;是访问和处理关系数据库的计算机标准语言 无论用什么编程语言&#xff08;Java、Python、C……&#xff09;编写程序&#xff0c;只要涉及到操作关系数据库都必须通过SQL来完成 …

蚂蚁集团Android一面凉经(2024)

蚂蚁集团Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《蚂蚁集团Android一面凉经(2024)》。 面试职位: 蚂蚁集团-Android/iOS开发工程师-支…

优秀需求缺陷管理工具推荐及选购技巧

国内外主流的10款需求缺陷管理工具对比&#xff1a;PingCode、Worktile、禅道、Teambition、TAPD、Trello、简道云、Jira 、Bugzilla、Asana。 在选择需求缺陷管理工具时&#xff0c;面对众多选项&#xff0c;许多人可能感到困惑。不管是初创公司还是大型企业&#xff0c;都需要…

N3 - Pytorch文本分类入门

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 文本分类的基本流程常用的数据清洗方法如何使用jieba实现英文分词如何构建文本向量代码实践数据准备构建词典生成数据批次和迭代器模型设计模型创建模型训…

【vluhub】zabbix漏洞

介绍&#xff1a; zabbix是对服务器资源状态例如、内存空间、CPU、程序运行状态进行检测、设置预警值、短信设置等功能等一款开源工具。配置不当存在未授权,SQL注入漏洞 弱口令 nameadmin&passwordzabbix nameguest&password POST /index.php HTTP/1.1 Host: 192.1…

[C++实战]日期类的实现

&#x1f496;&#x1f496;&#x1f496;欢迎来到我的博客&#xff0c;我是anmory&#x1f496;&#x1f496;&#x1f496; 又和大家见面了 欢迎来到C探索系列 作为一个程序员你不能不掌握的知识 先来自我推荐一波 个人网站欢迎访问以及捐款 推荐阅读 如何低成本搭建个人网站…

软件测试--测试管理与缺陷管理

文章目录 目标重点/难点 案例引入软件测试管理定义测试组织的定义独立组织测试的优缺点 测试管理——测试计划定义测试计划的持续活动 测试管理的准则出口准则入口准则 软件测试管理 | 测试用例的管理测试用例管理的重要性测试用例管理要解决的问题如何组织测试用例如何报告测试…

关于if return的组合来实现if else效果

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 关于if return的组合来实现if else效果 前言一、if return 前言 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、if return // 在链表中插入节点…

Apache POI-Excel入门与实战

目录 一、了解Apache POI 1.1 什么是Apache POI 1.2 为什么要使用ApaChe POI 1.3 Apache POI应用场景 1.4 Apache POI 依赖 二、Apache POI-Excel 入门案例 2.1 写入Excel文件 2.2 读取文件 四、Apache POI实战 4.1 创建一个获取天气的API 4.2高德天气请求API与响应…

vs code解决报错 (c/c++的配置环境 远端机器为Linux ubuntu)

参考链接&#xff1a;https://blog.csdn.net/fightfightfight/article/details/82857397 https://blog.csdn.net/m0_38055352/article/details/105375367 可以按照步骤确定那一步不对&#xff0c;如果一个可以就不用往下看了 目录 一、检查一下文件扩展名 二、安装扩展包并…

秒杀案例-分布式锁Redisson、synchronized、RedLock

模拟秒杀 源码地址前期准备创建数据库表导入数据dependenciespomControllerTSeckillProductTseckillProductServiceTseckillProductServiceImplTseckillProductMapperTseckillProductMapper.xml使用JMeter压力测试开始测试超卖现象原因解决办法更改数据库库存500进行JMeter压力…