主成分分析的应用之sklearn.decomposition模块的PCA函数

主成分分析的应用之sklearn.decomposition模块的PCA函数

一、模型建立整体步骤

二、数据

2297.86	589.62	474.74	164.19	290.91	626.21	295.20	199.03
2262.19	571.69	461.25	185.90	337.83	604.78	354.66	198.96
2303.29	589.99	516.21	236.55	403.92	730.05	438.41	225.80
2308.70	551.14	476.45	293.23	406.44	785.74	494.04	254.10
2337.65	589.28	509.82	334.05	442.50	850.15	563.72	246.51
2418.96	618.60	454.20	429.60	615.00	1065.12	594.48	164.28
2702.34	735.01	475.36	459.69	790.26	1025.99	741.60	187.81
3015.32	779.68	474.15	537.95	865.45	1200.52	903.22	196.77
3135.65	849.53	583.50	629.32	929.92	1391.11	882.41	221.85
3415.92	1038.98	615.74	705.72	976.02	1449.49	954.56	242.26

三、代码实现(含详细注释)

#程序文件ex12_1.py
import numpy as np
from sklearn.decomposition import PCA
from scipy.stats import zscorea=np.loadtxt('data12_1.txt')
# scipy.stats的zscore函数对数组a中的数据进行标准化处理,并将结果赋值给变量b。
# 标准化处理是将数据转换为以0为均值,以标准差为1的分布,
# 这样做的目的是消除不同量纲的影响,使得数据具有可比性。
# zscore函数计算每个值与其均值的差,然后除以该数据的标准差,
# 从而得到Z分数(也称为标准分数)。
# 参数ddof=1指定在计算标准差时使用分母N-1(其中N是数据的数量),这是统计学中的样本标准差计算方式(无偏估计)。
# 如果ddof=0,则使用N作为分母计算标准差,这通常对应于总体标准差。
b=zscore(a, ddof=1)   #数据标准化
# 创建一个PCA实例,使用数据集b来“拟合”这个实例(即计算PCA转换所需的参数)
md=PCA().fit(b)  #构造并拟合模型
print('特征值为:', md.explained_variance_)
print('各主成分贡献率:', md.explained_variance_ratio_)
# .components_:这是md对象的一个属性,它通常存储了数据分解或降维后的结果。在PCA的上下文中,components_属性包含了主成分的方向(或者说是“轴”),
# 这些主成分是用来解释原始数据集方差的最大方向。每个主成分都是一个向量,向量的长度等于原始数据的特征数。
xs1=md.components_  #提出各主成分系数,每行是一个主成分
print('各主成分系数:\n',xs1)# axis=0代表沿着行的方向(即垂直方向,对列进行求和),而axis=1代表沿着列的方向(即水平方向,对行进行求和)。
# 因此,axis=1意味着会对xs1的每一行进行求和。
check=xs1.sum(axis=1,keepdims=True)  #计算各个主成分系数的和
# xs1 * np.sign(check):这个操作是逐元素的乘法。
# xs1数组中的每个元素与np.sign(check)数组中对应位置的元素相乘。这意味着:
# 如果check中的某个元素为正,xs1中对应的元素保持不变(因为乘以1)。
# 如果check中的某个元素为负,xs1中对应的元素取反(因为乘以-1)。
# 如果check中的某个元素为零,xs1中对应的元素将变为零(因为乘以0)。
xs2=xs1*np.sign(check)  #调整主成分系数,和为负时乘以-1
print('调整后的主成分系数:', xs2)

三、结果及其分析

特征值为: [6.27943341e+00 1.30599080e+00 2.74277611e-01 9.97624700e-022.31016993e-02 1.22233669e-02 4.69357480e-03 5.17066158e-04]
各主成分贡献率: [7.84929176e-01 1.63248850e-01 3.42847014e-02 1.24703088e-022.88771241e-03 1.52792086e-03 5.86696851e-04 6.46332697e-05]
各主成分系数:[[ 0.39186166  0.38439344  0.3059243   0.39231584  0.38537825  0.389613220.38389911  0.05908768][-0.0210478   0.02214509  0.47783697 -0.08905605 -0.19878256 -0.1043221-0.11376475  0.83634169][ 0.14762176  0.39254883  0.57745685 -0.20021017 -0.15914777 -0.1347164-0.4303164  -0.47108809][ 0.47832186  0.48941314 -0.44488132 -0.27708115  0.02393188 -0.465646730.07989617  0.18222681][-0.09762149 -0.27604773  0.34873203 -0.35508891  0.52307577 -0.456434080.4158212  -0.10824944][ 0.70552867 -0.53549607  0.049896   -0.32914209 -0.14716623  0.28505603-0.02367193 -0.03426265][-0.08102349  0.10492282  0.11905975 -0.07206231 -0.68369188 -0.020605350.68706375 -0.15212634][ 0.28557308 -0.29011082  0.09180137  0.6940343  -0.15286467 -0.55886444-0.05098258 -0.07665729]]
调整后的主成分系数: [[ 0.39186166  0.38439344  0.3059243   0.39231584  0.38537825  0.389613220.38389911  0.05908768][-0.0210478   0.02214509  0.47783697 -0.08905605 -0.19878256 -0.1043221-0.11376475  0.83634169][-0.14762176 -0.39254883 -0.57745685  0.20021017  0.15914777  0.13471640.4303164   0.47108809][ 0.47832186  0.48941314 -0.44488132 -0.27708115  0.02393188 -0.465646730.07989617  0.18222681][ 0.09762149  0.27604773 -0.34873203  0.35508891 -0.52307577  0.45643408-0.4158212   0.10824944][-0.70552867  0.53549607 -0.049896    0.32914209  0.14716623 -0.285056030.02367193  0.03426265][ 0.08102349 -0.10492282 -0.11905975  0.07206231  0.68369188  0.02060535-0.68706375  0.15212634][-0.28557308  0.29011082 -0.09180137 -0.6940343   0.15286467  0.558864440.05098258  0.07665729]]

由结果可知前两个特征值的累积量贡献率达到了94.82%,主成分分析效果很好,因此后续直接对这两个主成分的特征值进行详细的分析即可。

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

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

相关文章

【Redis】List 列表

文章目录 初识列表常用命令lpushlpushxlrangerpushrpushxlpop & rpoplindexlinsertllen阻塞操作 —— blpop & brpop 内部编码应用场景 初识列表 列表类型,用于存储多个字符串。在操作和实现上,类似 C 的双端队列,支持随机访问(O(N)…

Android framework 中间件开发(三)

前两篇我们讲了中间件的开发和打包应用, Android framework 中间件开发(一) Android framework 中间件开发(二) 这边我们来讲一下在中间件中编写JNI 1.新建C文件 找到frameworks\base\services\core\jni\路径,新建一个cpp文件,文件名为com_android_server_DarkControlService.c…

深入了解linux系统—— 基础IO(上)

文件 在之前学习C语言文件操作时,我们了解过什么是文件,这里简单回顾一下: 文件存在磁盘中,文件有分为程序文件、数据文件;二进制文件和文本文件等。 详细描述见文章:文件操作——C语言 文件在磁盘里&a…

Flink CDC—实时数据集成框架

Flink CDC 是一个基于流的数据集成工具,旨在为用户提供一套功能更加全面的编程接口(API),它基于数据库日志的 CDC(变更数据捕获)技术实现了统一的增量和全量数据读取。 该工具使得用户能够以 YAML 配置文件…

ES(ES2023/ES14)最新更新内容,及如何减少内耗

截至2023年10月,JavaScript(ECMAScript)的最新版本是 ES2023(ES14)。 ES2023 引入了许多新特性,如findLast、toSorted等,同时优化了性能。通过减少全局变量、避免内存泄漏、优化循环、减少DOM操作、使用Web Workers、懒加载、缓存、高效数据结构和代码压缩,可以显著降低…

常见的 Python 环境配置问题及解决方案

1. Python 环境配置的常见问题 初学者在配置 Python 环境时,可能会遇到以下几类问题: 1.1 不同版本的兼容性 Python 目前有两个主要版本系列:Python 2.x 和 Python 3.x。Python 2.x 已于 2020 年 1 月 1 日停止维护,因此强烈建…

day20-线性表(链表II)

一、调试器 1.1 gdb(调试器) 在程序指定位置停顿 1.1.1 一般调试 gcc直接编译生成的是发布版(Release) gcc -g //-g调式版本,(体积大,内部有源码)(DeBug&#…

基于Spring Boot+Layui构建企业级电子招投标系统实战指南

一、引言:重塑招投标管理新范式 在数字经济浪潮下,传统招投标模式面临效率低、透明度不足、流程冗长等痛点。本文将以Spring Boot技术生态为核心,融合Mybatis持久层框架、Redis高性能缓存及Layui前端解决方案,构建一个覆盖招标代理…

uniapp -- uCharts 仪表盘刻度显示 0.9999999 这样的值问题处理。

文章目录 🍉问题🍉解决方案🍉问题 在仪表盘上,23.8变成了 23.799999999999997 🍉解决方案 formatter格式化问题 1:在 config-ucharts.js 或 config-echarts.js 配置对应的 formatter 方法 formatter: {yAxisDemo1: function (

git 对于已经追踪,但没有git add 的文件,撤回修改的方法

要撤销对已追踪文件的修改&#xff08;但尚未使用git add添加到暂存区&#xff09;&#xff0c;你可以使用以下几种方法&#xff1a; 1. 使用 git restore (Git 2.23.0及更高版本) 这是较新版本Git中推荐的方式&#xff1a; # 撤销单个文件的修改git restore <file># …

脚本语言Lua

本文来源 &#xff1a;腾讯元宝 Lua是一种轻量级、可嵌入的脚本语言&#xff0c;由巴西里约热内卢天主教大学的Roberto Ierusalimschy、Waldemar Celes和Luiz Henrique de Figueiredo于1993年开发。其设计目标是嵌入应用程序中&#xff0c;提供灵活的扩展和定制功能。 主要特性…

ThingsBoard使用Cassandra部署时性能优化

1、概述 当遇到ThingsBoard设备数量特别多的时候,并且传输数据遥测点量特别大的时候,我们需要调整一下参数来进行优化,使其性能达到最佳的进行快速写入。 注意:以下这些参数再系统部署的时候就需要规划好配置,不能安装好了再二次来进行配置。 2、Cassandra配置参数优化 …

Git Worktree 使用

新入职了一家公司&#xff0c;发现不同项目用的使用一个 git 仓库管理。不久之后我看到这篇文章。 Git 的设计部​​分是为了支持实验。一旦你确定你的工作被安全地跟踪&#xff0c;并且存在安全的状态&#xff0c;以便在出现严重错误时可以恢复&#xff0c;你就不会害怕尝试新…

维智定位 Android 定位 SDK

概述 维智 Android 定位 SDK是为 Android 移动端应用提供的一套简单易用的定位服务接口&#xff0c;为广大开发者提供融合定位服务。通过使用维智定位SDK&#xff0c;开发者可以轻松为应用程序实现极速、智能、精准、高效的定位功能。 重要&#xff1a;为了进一步加强对最终用…

【CSS】使用 CSS 绘制三角形

一、Border 边框法&#xff08;最常用&#xff09; 原理&#xff1a;通过设置元素的宽高为 0&#xff0c;利用透明边框相交形成三角形。 .triangle {width: 0;height: 0;border-left: 50px solid transparent; /* 左侧边框透明 */border-right: 50px solid transparent; /* …

RabbitMQ 快速上手:安装配置与 HelloWorld 实践(一)

一、引言 在当今分布式系统大行其道的技术浪潮下&#xff0c;各个服务之间的通信与协同变得愈发复杂。想象一下&#xff0c;一个电商系统在大促期间&#xff0c;订单服务、库存服务、支付服务、物流服务等众多模块需要紧密配合。如果没有一种高效的通信机制&#xff0c;系统很容…

【deekseek】TCP Offload Engine

是的&#xff0c;TOE&#xff08;TCP Offload Engine&#xff09;通过专用硬件电路&#xff08;如ASIC或FPGA&#xff09;完整实现了TCP/IP协议栈&#xff0c;将原本由CPU软件处理的协议计算任务完全转移到网卡硬件中。其延迟极低的核心原因在于 硬件并行性、零拷贝架构 和 绕过…

JavaScript 的编译与执行原理

文章目录 前言&#x1f9e0; 一、JavaScript 编译与执行过程1. 编译阶段&#xff08;发生在代码执行前&#xff09;✅ 1.1 词法分析&#xff08;Lexical Analysis&#xff09;✅ 1.2 语法分析&#xff08;Parsing&#xff09;✅ 1.3 语义分析与生成执行上下文 &#x1f9f0; 二…

WORD个人简历单页326款模版分享下载

WORD个人简历模版下载&#xff1a;WORD个人简历模版https://pan.quark.cn/s/7e79a822c490

Android 中 显示 PDF 文件内容(AndroidPdfViewer 库)

PDFView 是一个用于在 Android 应用中显示 PDF 文档的库。它提供了丰富的功能和灵活的配置选项&#xff0c;使得开发者能够轻松地在应用中嵌入 PDF 阅读器。 一、 添加依赖 在模块的 build.gradle 文件中添加以下依赖&#xff1a; // pdfimplementation("com.github.bar…