首页 > 解决方案 > 如何将 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以最简单的方式成为一个数据框。

标签: pythonpandasdataframescikit-learnsklearn-pandas

解决方案


As you mentioned, applying the scaling results in a numpy array, to get a dataframe you can initialize a new one:

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)

推荐阅读