You need to enable JavaScript to run this app. 循环选择分析待剔除变量:如何用Python实现每次PCA剔除一个变量
优惠活动
大模型
产品
解决方案
定价
更多

循环选择分析待剔除变量:如何用Python实现每次PCA剔除一个变量

实现方案

Python 无需额外的“宏”支持,直接通过循环遍历变量名、每次剔除单个变量后执行PCA即可,核心依赖pandas做数据处理、scikit-learn做PCA计算。

前置依赖

先安装需要的第三方库:

pip install pandas scikit-learn

完整代码示例

import pandas as pd
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler

# ---------------------- 配置部分 ----------------------
# 假设你的原始数据集为 pandas DataFrame 格式,变量名如下
var_list = [
    'Var_1_GroupA', 'Var_2_GroupA', 
    'Var_1_GroupB', 'Var_2_GroupB', 'Var_3_GroupB',
    'Var_1_GroupC', 'Var_2_GroupC', 'Var_3_GroupC', 'Var_4_GroupC', 'Var_5_GroupC',
    'Var_1_GroupD', 'Var_1_GroupE',
    'new_Var_1_GroupA', 'new_Var_1_GroupB', 'new_Var_1_GroupC', 'new_Var_2_GroupC',
    'Var_1_GroupF', 'Var_1_GroupG',
    'Var_1_GroupH', 'Var_2_GroupH'
]
# PCA 配置:保留前2个主成分,可根据需求调整为数值(保留前N个)或0-1的浮点数(保留对应占比的方差)
pca_n_components = 2
# ------------------------------------------------------

# 初始化存储结果的字典,key为本次剔除的变量名,value为对应PCA结果
pca_result_pool = {}
std_scaler = StandardScaler()
pca_model = PCA(n_components=pca_n_components)

# 循环执行每次剔除单个变量的PCA计算
for excluded_var in var_list:
    # 生成剔除当前变量的数据集子集
    current_subset = df[var_list].drop(columns=[excluded_var])
    # 对数据集做标准化(PCA计算的必要前置步骤)
    scaled_subset = std_scaler.fit_transform(current_subset)
    # 拟合PCA
    fitted_pca = pca_model.fit(scaled_subset)
    # 存储核心结果,可根据你的分析需求增减存储字段
    pca_result_pool[excluded_var] = {
        # 各主成分解释方差占比
        "explained_variance_ratio": fitted_pca.explained_variance_ratio_,
        # 主成分载荷矩阵
        "components": fitted_pca.components_,
        # 原始数据降维后的结果
        "transformed_data": fitted_pca.transform(scaled_subset)
    }

结果调用示例

要获取剔除Var_1_GroupA后的PCA解释方差占比,直接调用存储的字典即可:

print(pca_result_pool["Var_1_GroupA"]["explained_variance_ratio"])

补充说明

  • PCA计算对数据量纲敏感,务必确保输入数据已经做标准化处理
  • 如果你的数据集变量是动态变化的,无需手动写var_list,直接通过var_list = df.columns.tolist()即可获取所有列名
  • 如果你需要用全量数据集的标准化规则而非每次子集单独标准化,可以先对全量数据集做标准化后再循环剔除变量
  • 若需要每次PCA的结果单独导出为文件,可以在循环末尾加对应导出逻辑,比如把载荷矩阵存为csv文件

内容的提问来源于stack exchange,提问作者chipsin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 17:36:05