当前位置: 首页 > news >正文

主成分分析的应用之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%,主成分分析效果很好,因此后续直接对这两个主成分的特征值进行详细的分析即可。

相关文章:

  • [Android] 青木扫描全能文档3.0,支持自动扫描功能
  • 从0开始学linux韦东山教程第四章问题小结(1)
  • 单片机设计_停车场车位管理系统(AT89C52、LCD1602)
  • NDRange(OpenCL)和 Grid/Block(CUDA)对比
  • oppo手机安装APK失败报错:安装包异常
  • ngx_http_referer_module 模块概述
  • HTTPS的工作过程
  • 2025/5/18
  • 卷积神经网络进阶:转置卷积与棋盘效应详解
  • esp32课设记录(二)lcd屏显示文字与照片
  • 雷军直面小米危机:SU7 事故余波未平,玄戒 O1 力挽狂澜
  • 水平可见直线--上凸包(andrew算法
  • 【藏经阁】加密机服务完整解决方案,包含客户端+服务端
  • AI:OpenAI论坛分享—《AI重塑未来:技术、经济与战略》
  • 【方法论】如何构建金字塔框架
  • 实操分享java应用容器化,使用docker作为容器工具
  • Cursor:简单三步提高生成效率
  • 想要建站但没有服务器?雨云RCA,免服务器即可搭建完整网站!!!
  • 目标检测新突破:用MSBlock打造更强YOLOv8
  • 基于 STM32 的全自动洗车监控系统设计与实现
  • 专业平台建设网站关了吗/seo分析工具有哪些
  • 深圳建外贸网站/海外营销方案
  • b2b b2c c2c o2o例子/seo企业优化方案
  • 做代购有哪些网站有哪些/香港旺道旺国际集团
  • 外国做挂的网站是多少钱/中国科技新闻网
  • 华为荣耀手机商城官方网站/平台软件定制开发