You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Scikit-learn中对新数据使用inverse_transform(适配PCA与标准化流程)

如何对新数据使用PCA和StandardScaler的inverse_transform

嘿,我来帮你理清楚完整的逆变换流程——因为你是先做标准化再做PCA降维的,所以逆变换必须按相反的顺序来:先逆PCA,再逆标准化。不过首先要纠正一个关键问题:你之前的代码没有保存拟合好的StandardScaler和PCA实例,这会导致后续无法正确逆变换,我先帮你调整训练代码,再一步步讲新数据的处理。

第一步:修正训练代码,保存拟合好的实例

你之前的代码里StandardScaler()是临时创建的对象,用完就丢了,逆变换必须用同一个拟合过的实例(它保存了训练数据的均值、标准差),PCA同理。调整后的训练代码如下:

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

variance_to_retain = 0.99

# 保存拟合好的标准化器(关键!)
scaler = StandardScaler()
np_scaled = scaler.fit_transform(df_data)

# 保存拟合好的PCA模型(关键!)
pca = PCA(n_components=variance_to_retain)
np_pca = pca.fit_transform(np_scaled)

# 后续的DataFrame转换可以保留
df_scaled = pd.DataFrame(np_scaled, columns=df_data.columns)
num_components = len(pca.explained_variance_ratio_)
cum_variance_explained = np.cumsum(pca.explained_variance_ratio_)

第二步:对新数据执行逆变换的完整流程

假设你有新数据new_data,它的特征数量、顺序必须和训练数据df_data完全一致,按以下步骤操作:

1. 用训练好的scaler标准化新数据

注意:绝对不能对新数据用fit_transform,必须用transform,这样才会沿用训练数据的均值和标准差做标准化:

# 标准化新数据(和训练数据用同一套基准)
new_data_scaled = scaler.transform(new_data)

2. (可选)将新数据映射到PCA降维空间

如果需要把新数据转换到PCA的低维空间,用训练好的PCA实例的transform方法:

new_data_pca = pca.transform(new_data_scaled)

3. 逆PCA变换,回到标准化后的原始特征空间

用PCA的inverse_transform把低维数据还原到标准化后的高维特征空间:

new_data_scaled_inversed = pca.inverse_transform(new_data_pca)

4. 逆标准化变换,回到原始数据尺度

最后用scaler的inverse_transform把标准化后的数据还原到原始数据的数值范围:

new_data_original = scaler.inverse_transform(new_data_scaled_inversed)

关键注意事项

  • 新数据的特征列必须和训练数据完全匹配(数量、顺序、含义一致),否则transform会抛出维度不匹配的错误。
  • 必须保留训练时拟合好的scaler和pca实例,最好用joblib或pickle保存到文件,方便后续加载使用:
    import joblib
    joblib.dump(scaler, 'scaler.pkl')
    joblib.dump(pca, 'pca.pkl')
    # 后续加载
    scaler = joblib.load('scaler.pkl')
    pca = joblib.load('pca.pkl')
    
  • 如果你的需求是把训练时得到的PCA降维数据(比如np_pca)逆变换回原始数据,流程是一样的:先逆PCA到标准化空间,再逆标准化到原始尺度。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:27:23