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() 类中创建一个可以修复上述错误的函数?