dmm*_*mmd 2 python dataframe pandas scikit-learn sklearn-pandas
我正在使用一个模型,在分为训练和测试后,我想应用 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)
Run Code Online (Sandbox Code Playgroud)
我怎样才能恢复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)
Run Code Online (Sandbox Code Playgroud)
2022 年更新
从 scikit-learn 版本 1.2.0 开始,可以使用set_outputAPI 来配置转换器以输出 pandas DataFrame(查看文档示例)
上面的例子可以简化如下:
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)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4658 次 |
| 最近记录: |