小编Arm*_*ena的帖子

如何为自定义变压器创建 pandas 输出?

scikit-learn 1.2.0 中有很多变化,它支持所有变压器的 pandas 输出,但如何在自定义变压器中使用它?

在[1]中:这是我的自定义变压器,它是一个标准缩放器:

from sklearn.base import BaseEstimator, TransformerMixin
import numpy as np

class StandardScalerCustom(BaseEstimator, TransformerMixin):
    def fit(self, X, y=None):
        self.mean = np.mean(X, axis=0)
        self.std = np.std(X, axis=0)
        return self

    def transform(self, X):
        return (X - self.mean) / self.std
Run Code Online (Sandbox Code Playgroud)

在[2]中:创建了特定的scale管道

scale_pipe = make_pipeline(StandardScalerCustom())
Run Code Online (Sandbox Code Playgroud)

在[3]中:添加到一个完整的管道中,它可能与缩放器、输入器、编码器等混合。

full_pipeline = ColumnTransformer([
    ("imputer", impute_pipe, ['column_1'])
    ("scaler", scale_pipe, ['column_2'])
])

# From documentation
full_pipeline.set_output(transform="pandas")
Run Code Online (Sandbox Code Playgroud)

得到这个错误:

ValueError:无法配置 StandardScalerCustom() 的输出,因为set_output不可用。


有一个解决方案,它可以是: set_config(transform_output="pandas")

但根据具体情况,如何在 StandardScalerCustom() 类中创建一个可以修复上述错误的函数?

python machine-learning scikit-learn scikit-learn-pipeline

7
推荐指数
1
解决办法
1614
查看次数