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

主成分分析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.shape
    correlation_matrix = np.corrcoef(data.T)
    chi2, p_value = bartlett(*[np.array(data[:, i]) for i in range(p)])
    return chi2, p_value

kmo_value = calculate_kmo(data_scaled)
chi_square_value, p_value = calculate_bartlett_sphericity(data_scaled)

# 主成分分析(PCA)
pca = PCA(n_components

http://www.kler.cn/a/281301.html

相关文章:

  • notepad++正则表达式,怎样搜索同时满足两个条件的字符串?
  • 做项目过程中问题小汇总 | vue3 elementplus js
  • nginx反向代理,负载均衡,动静分离
  • 基于yolov8的人员溺水检测告警监控系统python源码+onnx模型+评估指标曲线+精美GUI界面
  • ROS2 CMakeLists.txt package.xml
  • TCP丢失时重发为什么倍增重发等待时间(指数退避)
  • 不同格式和要求情况下,excel文件上传问题
  • 大东山水迎天下 吉品云集新电商 吉林市首届电商节今日启动
  • ComsolMatlab 亥姆霍兹共振消声器传递损失理论解与仿真解
  • OpenAI的GPT-4模型详细介绍:研发能力、应用场景、开发的合作、持续投入
  • Python | Leetcode Python题解之第380题O(1)时间插入、删除和获取随机元素
  • docker 安装的mysql8 设置sql_mode
  • 页面间对象传递的几种方法
  • 开学季有什么必买好物?2024数码好物清单大合集!
  • Nginx负载均衡静态资源缓存配置指南
  • 共享打印机设置,可以一台打印接连接多台电脑(要求在同一个局域网下)
  • RocketMQ Dashboard
  • 【ORACLE】LOBSEGMENT类型对象清理
  • 邵阳网站建设手机网页
  • 【C++】vector(下)--上篇