【发布时间】:2017-01-26 23:45:56
【问题描述】:
我正在尝试使用 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 是一个 Pandas DataFrame,其中包含 ['AGE', 'WASTGIRF', 'PAI', 'smokenow1'] 等列。
当然,在FeatureUnion 示例中,我想提供更多转换操作,但是,它们都采用 Pandas DataFrame 并返回另一个 Pandas DataFrame。所以实际上,我想做这样的事情......
data --+-->num features-->num transforms--+-->FeatureUnion-->model
| |
+-->cat features-->cat transforms--+
我该怎么做?
对于上面的例子,我得到的错误是......
TypeError: float() argument must be a string or a number
【问题讨论】:
标签: python scikit-learn