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

主成分分析PCA通用代码(输出world报告)

在这里插入图片描述

这段代码的功能是进行主成分分析(PCA),并将分析结果生成一个详细的报告文档。以下是该代码的主要步骤和功能介绍:

  1. 数据读取与预处理

    • 代码首先从Excel文件中读取数据,删除缺失值,并提取所有特征列。
    • 对数据进行标准化处理,使得不同特征的数据具有相同的尺度。
  2. KMO检验与Bartlett’s球形度检验

    • 计算KMO值和Bartlett’s球形度检验值,用于判断数据是否适合进行主成分分析。
  3. 主成分分析(PCA)

    • 使用PCA对标准化后的数据进行降维,提取出各主成分的特征根、方差解释率以及累积方差解释率。
    • 计算因子载荷系数,衡量各变量在主成分中的贡献。
  4. 生成分析报告

    • 在文档中添加KMO检验与Bartlett’s检验结果的描述。
    • 创建并填充总方差解释表格,展示各主成分对方差的解释程度。
    • 插入碎石图,用于确定主成分的数量。
    • 创建因子载荷系数表,并生成相应的热力图,展示各主成分中隐变量的重要性。
    • 最后,创建成分矩阵表,展示原始变量在各主成分上的贡献率。
  5. 保存文档

    • 最终将生成的分析报告保存为Word文档,文件名为“主成分分析报告.docx”。

输入格式:每一行为一个样本,每一列为一个指标数据

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from scipy.stats import bartlett
import numpy as np
from docx import Document
from docx.shared import Pt, Inches
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
import matplotlib.pyplot as plt
import seaborn as sns# 设置中文字体和负号显示
plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置中文字体为黑体
plt.rcParams['axes.unicode_minus'] = False  # 解决负号'-'显示为方块的问题# 读取Excel数据
data = pd.read_excel('版本2_异常值替换为平均值_附件1.xlsx')  # 替换为您的数据文件
data = data.dropna()  # 清除缺失值
features = data.columns.tolist()# 数据标准化
scaler = StandardScaler()
data_scaled = scaler.fit_transform(data)# KMO检验
def calculate_kmo(data):data_corr = np.corrcoef(data.T)data_inv = np.linalg.inv(data_corr)kmo = np.sum(data_corr * data_inv) / (np.sum(data_corr**2) - np.sum(np.diag(data_corr)**2))return kmo# Bartlett's球形度检验
def calculate_bartlett_sphericity(data):n, p = data.shapecorrelation_matrix = np.corrcoef(data.T)chi2, p_value = bartlett(*[np.array(data[:, i]) for i in range(p)])return chi2, p_valuekmo_value = calculate_kmo(data_scaled)
chi_square_value, p_value = calculate_bartlett_sphericity(data_scaled)# 主成分分析(PCA)
pca = PCA(n_components

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • [大模型]源码安装-Langchain-Chatchat-V0.3
  • 【初阶数据结构】顺序表和链表算法题(下)
  • 图像处理中的对抗性研究:浅谈水印去除技术
  • Golang学习笔记-Golang中的锁
  • Linux上安装Conda以管理Python环境
  • F - Rook on Grid 矩阵 侧面视角 树状数组
  • 《Python 关键概念全解析:可迭代对象、迭代器、生成器与装饰器》
  • 一个简单的springboot项目(有源码)
  • Nginx负载均衡中静态与动态内容分离策略与实践
  • 工厂模式与策略模式的区别?
  • 强化学习,第 5 部分:时间差异学习
  • 2、AI测试辅助-需求分析
  • 【数学建模】国赛论文写作教学——问题重述与分析
  • CST如何仿真Coverage Efficiency和Coverage Threshold
  • 第15届蓝桥杯青少组Scratch初级组省赛真题试卷
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 2017前端实习生面试总结
  • CentOS6 编译安装 redis-3.2.3
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Java 内存分配及垃圾回收机制初探
  • JavaScript异步流程控制的前世今生
  • Java深入 - 深入理解Java集合
  • js作用域和this的理解
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • Spring核心 Bean的高级装配
  • Vue学习第二天
  • 持续集成与持续部署宝典Part 2:创建持续集成流水线
  • 分布式事物理论与实践
  • 离散点最小(凸)包围边界查找
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 走向全栈之MongoDB的使用
  • Java总结 - String - 这篇请使劲喷我
  • ​数据结构之初始二叉树(3)
  • $L^p$ 调和函数恒为零
  • (0)Nginx 功能特性
  • (1) caustics\
  • (2)空速传感器
  • (leetcode学习)236. 二叉树的最近公共祖先
  • (八)Spring源码解析:Spring MVC
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (回溯) LeetCode 78. 子集
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (三)elasticsearch 源码之启动流程分析
  • (贪心 + 双指针) LeetCode 455. 分发饼干
  • .dwp和.webpart的区别
  • .NET MAUI Sqlite数据库操作(二)异步初始化方法
  • .NET企业级应用架构设计系列之技术选型
  • @PreAuthorize注解
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • [.net]官方水晶报表的使用以演示下载
  • [8-27]正则表达式、扩展表达式以及相关实战