【发布时间】:2020-05-02 08:55:38
【问题描述】:
上下文
我正在使用 scikit-learn 并正在寻找一个转换器,它允许我简单地选择保留哪些列或删除哪些列。
问题
实际上,我想在我的管道中包含一个附加转换器步骤,让我可以选择保留哪些列或删除哪些列。我知道在下面的示例中我可以简单地使用其余部分,但这在我的实际实现中不起作用,我需要参数化列选择以便轻松地将其应用于训练、测试和最终评分。
示例
import numpy as np
import pandas as pd
from sklearn.compose import ColumnTransformer
from sklearn import preprocessing
prep_pipeline = ColumnTransformer(transformers=[("std_num", preprocessing.StandardScaler(), ["a", "b"])],
remainder = "passthrough")
X = pd.DataFrame([[0., 1., 2., 2.],
[1., 1., 0., 1.]])
X.columns = ["a", "b", "c", "d"]
prep_pipeline.fit_transform(X)
预期的解决方案
解决方案我需要一个 additional 转换器步骤,该步骤的角色专门用于选定的列 ["a", "d"] 因此预期的输出是:
array([[-1., 1.],
[ 1., -1.]])
【问题讨论】:
-
您可以通过定义从 BaseEstimator 和 TransformerMixin 扩展的类来编写您的转换器,并覆盖 fit 和 transform 方法来进行自定义转换
标签: python scikit-learn