Я использую практическое машинное обучение с Scikit-Learn и TensorFlow: Concepts, Tools ... Автор: Аурелен Жерон.
Я пытаюсь запустить код в главе 1 После "Конвейеры преобразования""и перед" Выбрать и обучить модель ".
В старой версии книги для комбинированного преобразования использовался следующий код:
from sklearn.base import BaseEstimator , TransformerMixin
class DataFrameSelector(BaseEstimator, TransformerMixin):
def __init__(self, attribute_names):
self.attribute_names = attribute_names
def fit(self, X, y=None):
return self
def transform(self, X):
return X[self.attribute_names].values
from sklearn.pipeline import FeatureUnion
#from sklearn_features.transformers import DataFrameSelector
num_attribs = list(housing_num)
cat_attribs = ["ocean_proximity"]
num_pipeline = Pipeline([
('selector', DataFrameSelector(num_attribs)),
('imputer', SimpleImputer(strategy="median")),
('attribs_adder', CombinedAttributesAdder()),
('std_scaler', StandardScaler()),
])
cat_pipeline = Pipeline([
('selector', DataFrameSelector(cat_attribs)),
('label_binarizer', LabelBinarizer()),
])
full_pipeline = FeatureUnion(transformer_list=[
("num_pipeline", num_pipeline),
("cat_pipeline", cat_pipeline),
])
housing_prepared=full_pipeline.fit_transform( housing )
housing_prepared
Однако в новом коде использовались новыепредставил ColumnTransformer
from sklearn.compose import ColumnTransformer
num_attribs=list(housing_num)
cat_attribs=["ocean_proximity"]
full_pipeline = ColumnTransformer([
("num", num_pipeline, num_attribs),
("cat", OneHotEncoder(),cat_attribs),
])
housing_prepared=full_pipeline.fit_transform( housing )
housing_prepared
Я хотел бы знать, почему старые версии кода были прекращены и не работают, и что нового в ColumnTransformer сравнивают с FeatureUnion.