【发布时间】:2021-07-18 20:50:07
【问题描述】:
我正在关注 Aurelion Geron 的机器学习书籍。
我正在试验ColumnTransformer 类。当我包含SimplerImputer 时,会创建一个额外的列。我知道SimplerImputer 用于填充total_bedrooms 列中的缺失值(结果中的列索引4),因此我不清楚它为什么要在结果中添加新列(列索引:10)。
当我不包括
SimplerImputer 来自ColumnTransformer,但创建一个实例,而fit_transform 是ColumnTransformer 的输出,我不会得到额外的列。请指教。
category_att = X.select_dtypes(include='object').columns
num_att = X.select_dtypes(include='number').columns
transformer = ColumnTransformer(
[
('adder', AttributeAdder(), num_att ),
('imputer', SimpleImputer(strategy='median'), ['total_bedrooms']),
('ohe', OneHotEncoder(), category_att)
],
remainder = 'passthrough'
)
用于添加两个新功能/列的自定义类
class AttributeAdder(BaseEstimator, TransformerMixin):
def __init__(self, add_bed_room = False):
self.add_bed_room = add_bed_room
def fit(self,y=None):
return self
def transform(self,X,y=None):
room_per_household = X.iloc[: , t_room ] / X.iloc[: , t_household ]
population_per_household = X.iloc[: , t_population ] / X.iloc[: , t_household ]
return np.c_[X,room_per_household,population_per_household]
【问题讨论】:
标签: python scikit-learn