gpt4 book ai didi

python - 如何将 StandardScaler() 转换转换回数据框?

转载 作者:行者123 更新时间:2023-12-02 19:12:00 28 4
gpt4 key购买 nike

我正在使用一个模型,在分成训练和测试之后,我想应用 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)

2022 年更新

从 scikit-learn 版本 1.2.0 开始,可以使用 set_output API 将转换器配置为输出 pandas 数据帧(查看 doc example )

上面的例子可以简化为:

import pandas as pd

cols = X_train.columns
sc = StandardScaler().set_output(transform="pandas")
X_train_sc = sc.fit_transform(X_train)
X_test_sc = sc.transform(X_test)

关于python - 如何将 StandardScaler() 转换转换回数据框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64161419/

28 4 0