fit_transform() takes 2 positional arguments but 3 were given with LabelBinarizer

前端 未结 13 1944
时光取名叫无心
时光取名叫无心 2020-12-07 16:35

I am totally new to Machine Learning and I have been working with unsupervised learning technique.

Image shows my sample Data(After all Cleaning) Screenshot : Sample

13条回答
  •  既然无缘
    2020-12-07 17:02

    Since LabelBinarizer doesn't allow more than 2 positional arguments you should create your custom binarizer like

    class CustomLabelBinarizer(BaseEstimator, TransformerMixin):
        def __init__(self, sparse_output=False):
            self.sparse_output = sparse_output
        def fit(self, X, y=None):
            return self
        def transform(self, X, y=None):
            enc = LabelBinarizer(sparse_output=self.sparse_output)
            return enc.fit_transform(X)
    
    num_attribs = list(housing_num)
    cat_attribs = ['ocean_proximity']
    
    num_pipeline = Pipeline([
        ('selector', DataFrameSelector(num_attribs)),
        ('imputer', Imputer(strategy='median')),
        ('attribs_adder', CombinedAttributesAdder()),
        ('std_scalar', StandardScaler())
    ])
    
    cat_pipeline = Pipeline([
        ('selector', DataFrameSelector(cat_attribs)),
        ('label_binarizer', CustomLabelBinarizer())
    ])
    
    full_pipeline = FeatureUnion(transformer_list=[
        ('num_pipeline', num_pipeline),
        ('cat_pipeline', cat_pipeline)
    ])
    
    housing_prepared = full_pipeline.fit_transform(new_housing)
    

提交回复
热议问题