如何将StandardScaler转换回数据框?

问题描述

我正在使用模型,在分为训练和测试后,我想应用StandardScaler()。但是,此转换将我的数据转换为数组,我想保留以前的格式。我该怎么办?

基本上,我有

from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

X = df[features]
y = df[["target"]]

X_train,X_test,y_train,y_test = train_test_split(
    X,y,train_size=0.7,random_state=42
)

sc = StandardScaler()
X_train_sc = sc.fit_transform(X_train)
X_test_sc = sc.transform(X_test)

如何将X_train_sc恢复为X_train的格式?

更新:在缩放之前,我不想让X_train_sc退回到原来的位置。我只希望X_train_sc以最简单的方式成为一个数据框。

解决方法

正如您提到的,将缩放结果应用于numpy数组,要获取一个数据帧,您可以初始化一个新的数据帧:

import pandas as pd

cols = X_train.columns
sc = StandardScaler()
X_train_sc = pd.DataFrame(sc.fit_transform(X_train),columns=cols)
X_test_sc = pd.DataFrame(sc.transform(X_test),columns=cols)