2016-09-19 5 views
0

私はsklearnを使ってパイプラインを生成しようとしています。ここで、最小の例である:上記の例でsplit-apply-sklearnパイプラインへの結合

def numFeat(data): 
    return data[['AGE', 'WASTGIRF']] 

def catFeat(data): 
    return pd.get_dummies(data[['PAI', 'smokenow1']]) 

features = FeatureUnion([('f1',FunctionTransformer(numFeat)), 
         ('f2',FunctionTransformer(catFeat)) ]) 

pipeline = Pipeline([('f', features), ('lm',LinearRegression())]) 

data = pd.DataFrame({'AGE':[1,2,3,4], 
        'WASTGIRF': [23,5,43,1], 
        'PAI':['a','b','a','d'], 
        'smokenow1': ["lots", "some", "none", "some"]}) 

pipeline.fit(data, y) 
print pipeline.transform(data) 

dataは、とりわけ、カラム['AGE', 'WASTGIRF', 'PAI', 'smokenow1']が含まパンダのデータフレームです。

もちろん、FeatureUnionの例では、さらに多くの変換操作を提供したいと思いますが、すべてがPandas DataFrameを使用して別のPandas DataFrameを返します。だから、実際には、私が

data --+-->num features-->num transforms--+-->FeatureUnion-->model 
     |         | 
     +-->cat features-->cat transforms--+ 

がどのように私はこれをやって行くのです...このような何かをしたいですか?

上記の例では、私が手にエラーがあなたが(IMOこれを変更する必要があります悪いデフォルトです)validate=FalseFunctionTransformerを初期化する必要があります...

TypeError: float() argument must be a string or a number 

答えて

関連する問題