【发布时间】:2021-04-09 17:50:39
【问题描述】:
我第一次尝试使用 sklearn 管道并使用 Titanic 数据集。我想首先在Embarked 中估算缺失值,然后进行一次热编码。在Sex 属性中,我只想做一个热编码。所以,我有以下步骤,其中两个步骤用于Embarked。但它没有按预期工作,因为Embarked 列除了它的一个热编码之外仍然存在,如输出所示(列具有“S”)。
如果我在一个步骤中对Embarked 进行插补和一个热编码,它会按预期工作。
这背后的原因是什么,或者我做错了什么?另外,我没有找到任何与此相关的信息。
categorical_cols_impute = ['Embarked']
categorical_impute = Pipeline([
("mode_impute", SimpleImputer(missing_values=np.nan, strategy='constant', fill_value='S')),
# ("one_hot", OneHotEncoder(sparse=False))
])
categorical_cols = ['Embarked', 'Sex']
categorical_one_hot = Pipeline([
("one_hot", OneHotEncoder(sparse=False))
])
preprocesor = ColumnTransformer([
("cat_impute", categorical_impute, categorical_cols_impute),
("cat_one_hot", categorical_one_hot, categorical_cols)
], remainder="passthrough")
pipe = Pipeline([
("preprocessor", preprocesor),
# ("model", RandomForestClassifier(random_state=0))
])
【问题讨论】:
标签: python machine-learning scikit-learn