【发布时间】:2021-06-19 02:55:08
【问题描述】:
我正在尝试创建一个结合了的管道:
- 各种特征的管道,无论类型如何(按特征清除不正确的数据)
- 用于分类特征的管道(分类估算器)
- 数值特征管道(数值输入器)
在sklearn.compose.ColumnTransformer¶。
这是我正在尝试做的一段代码
from sklearn.compose import ColumnTransformer
from sklearn.pipeline import Pipeline
alltypes = Pipeline([
('column_name_normalizer',ColumnNameNormalizer()),
('column_incorrect_data_cleaner',ColumnIncorrectDataCleaner(some_parameter),
])
num_pipeline = Pipeline([
('imputer',CustomNumImputer(some_parameter)), # remplir les valeurs manquants
])
cat_pipeline = Pipeline([
("cat", CustomCatImputer(some_parameter))
])
full_pipeline = ColumnTransformer([
("alltypes",alltypes,allcolumns),
("num", num_pipeline, numfeat),
("cat",cat_pipeline,catfeat)
])
try:
X = pd.DataFrame(full_pipeline.fit_transform(X).toarray())
except AttributeError:
X = pd.DataFrame(full_pipeline.fit_transform(X))
但是最后我得到了一个数据框,其特征数量比开始时更多,这是因为管道中的所有特征都是串联的,而不是对它们执行运算符 UNION:
例如,我想对所有特征进行一些转换,然后对分类特征进行一些转换,并对数值特征进行一些转换,但我希望输出数据框的大小始终相同。
你知道我该如何解决这个问题吗?
【问题讨论】:
标签: scikit-learn pipeline sklearn-pandas