编写我的第一个sk-learn管道时,我只是遇到一些问题,只有一部分列被放入管道:
mydf = pd.DataFrame({'classLabel':[0,1,0],'categorical':[7,8,9,5,7,6,4],'numeric1':[7,'numeric2':[7,"N.A"]})
columnsNumber = ['numeric1']
XoneColumn = X[columnsNumber]
我使用functionTransformer,如:
def extractSpecificColumn(X,columns):
return X[columns]
pipeline = Pipeline([
('features',FeatureUnion([
('continuous',Pipeline([
('numeric',FunctionTransformer(columnsNumber)),('scale',StandardScaler())
]))
],n_jobs=1)),('estimator',RandomForestClassifier(n_estimators=50,criterion='entropy',n_jobs=-1))
])
cv.cross_val_score(pipeline,XoneColumn,y,cv=folds,scoring=kappaScore)
这导致:TypeError:启用函数转换器时,’list’对象不可调用.
编辑:
如果我实例化如下所示的ColumnExtractor,则不会返回错误.但是不是函数变换器只是意味着像这样的简单情况,应该只是工作吗?
class ColumnExtractor(TransformerMixin):
def __init__(self,columns):
self.columns = columns
def transform(self,X,*_):
return X[self.columns]
def fit(self,*_):
return self