2017-11-13 8 views
0

機械学習の初心者です。 plsはこのエラーで私を助けます。私のコードは以下の通りです: カテゴリ変数を変換するカスタムクラスcatEncoder()を作成しようとしています。すべての見積もりは、適合と変形を実装する必要があります

class DFSelector(BaseEstimator, TransformerMixin): 
    def __init__(self, Attr): 
     self.Attr = Attr 
    def fit(self, X, y = None): 
     return self 
    def transform(self, X): 
     print(self.Attr) 
     return X[self.Attr].values 

class catEncoder(BaseEstimator, TransformerMixin): 
    def __init__(self): 
     pass 
    def fit(self, X, y = None): 
     return self 
    def transform(self, X): 
     #Some-codes to encode variables 
     return X.values 

numPipeline = [ 
       ('selector', DFSelector(numAttr)), 
       ('imputer', Imputer(strategy = 'median')) 
] 
catPipeline = [ 
       ('selector', DFSelector(catAttr)), 
       ('encoder', catEncoder()) 
] 
fullPipe = FeatureUnion(transformer_list = [ 
               ('nPipe', numPipeline), 
               ('cPipe', catPipeline) 
]) 
Xtrain_ready = fullPipe.fit_transform(Xtrain) 

私はこの次のエラー

のドキュメントを見てみると
TypeError: All estimators should implement fit and transform. '[('selector', DFSelector(Attr=array(['SibSp', 'Parch', 'Fare'], dtype=object))), ('imputer', Imputer(axis=0, copy=True, missing_values='NaN', strategy='median', verbose=0))]' (type <class 'list'>) doesn't 
+0

ところで、以下の回答はあなたに全く役に立たなかったのですか? – ags29

答えて

0

を取得し、問題がFeatureUnionは、変圧器は変圧器であるフォーム(文字列、変圧器)のタプルのリストを期待していることのようですオブジェクト。しかし、あなたの場合は、フォームのタプル(string、[multiple transformers])を渡しているようです。私の提案は、あなたのMLのロジックを完全に見ずに、これらの変圧器のリストを個々の変圧器に分割し、それらをFeatureUnionに渡すことです。

関連する問題