当最后一个估计器不是转换器时,如何使用 scikit-learn 管道进行转换?
Posted
技术标签:
【中文标题】当最后一个估计器不是转换器时,如何使用 scikit-learn 管道进行转换?【英文标题】:How can I transform with scikit-learn Pipeline when the last estimator is not a transformer? 【发布时间】:2022-01-07 09:37:48 【问题描述】:我有一个管道,我想执行预处理和特征工程步骤,但我不能使用fit_transform()
,因为RandomForestClassifier()
没有这样的方法。
我尝试使用管道的 _fit()
方法(因为这是 fit()
方法使用的方法),但这在我的转换器中给了我 KeyError。
这是下面的管道:
# pipeline transformations
_pipe = Pipeline(
[
(
"most_frequent_imputer",
MostFrequentImputer(features=config.model_config.impute_most_freq_cols),
),
(
"aggregate_high_cardinality_features",
AggregateCategorical(features=config.model_config.high_cardinality_cats),
),
(
"get_categorical_codes",
CategoryConverter(features=config.model_config.convert_to_category_codes),
),
(
"mean_imputer",
MeanImputer(features=config.model_config.continuous_features),
),
(
"random_forest",
RandomForestClassifier(n_estimators=100, n_jobs=-1, random_state=25),
),
]
)
【问题讨论】:
【参考方案1】:您可以执行以下操作:
_pipe[:-1].fit_transform(X)
这将基本上选择除最后一个之外的所有步骤,以便您可以执行fit_transform()
。需要注意的是,预处理步骤将被拟合。
【讨论】:
以上是关于当最后一个估计器不是转换器时,如何使用 scikit-learn 管道进行转换?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用带有 countVectorizer.fit_transform() 的腌制分类器来标记数据
typescript Angular 2应用程序角色访问装饰器,包装内置CanAccess功能。当用户角色不是ap时,防止视图转换