将参数传递给管道中的 FunctionTransformer
Pass arguments to FunctionTransformer in Pipeline
我一直在学习 sklearn 预处理和管道,并遇到了 FunctionTransformer 的概念。我想了解是否必须将它集成到管道中并将参数传递给 FunctionTransformer 所指的函数,该怎么做。考虑下面的例子,为了简单起见,我写了一个小函数:
def return_selected_dataset(dataset, columns):
return dataset[columns]
pipe = Pipeline([('Return_Col', FunctionTransformer(return_selected_dataset))])
pipe.fit_transform(dataset, columns = ['Col1', 'Col2'])
我收到以下错误:
ValueError: Pipeline.fit does not accept the columns parameter. You can pass parameters to specific steps of your pipeline using the stepname__parameter format, e.g. `Pipeline.fit(X, y, logisticregression__sample_weight=sample_weight)`.
如何将 columns
的值传递给函数?
另外,有人可以推荐我可以详细研究 sklearn 管道和预处理以及如何自定义这些过程的书籍或网站吗?
示例数据集:
import numpy as np
from sklearn.preprocessing import FunctionTransformer
from sklearn.pipeline import Pipeline
import pandas as pd
X = pd.DataFrame({'Col1':[1,2],'Col2':[3,4],'Col3':[5,6]})
你的函数:
def return_selected_dataset(dataset, columns):
return dataset[columns]
没有管道,它会像:
FunctionTransformer(return_selected_dataset,
kw_args={'columns':['Col1','Col2']}).transform(X)
注意管道,您只能将参数传递给每个拟合步骤,
见 the help page:
**fit_paramsdict of string -> object Parameters passed to the fit method of each step, where each parameter name is prefixed such that
parameter p for step s has key s__p.
所以我认为你可以做的是:
pipe = Pipeline([
('Return_Col',
FunctionTransformer(return_selected_dataset,
kw_args={'columns':['Col1','Col2']})
)
])
pipe.fit_transform(X)
Col1 Col2
0 1 3
1 2 4
我一直在学习 sklearn 预处理和管道,并遇到了 FunctionTransformer 的概念。我想了解是否必须将它集成到管道中并将参数传递给 FunctionTransformer 所指的函数,该怎么做。考虑下面的例子,为了简单起见,我写了一个小函数:
def return_selected_dataset(dataset, columns):
return dataset[columns]
pipe = Pipeline([('Return_Col', FunctionTransformer(return_selected_dataset))])
pipe.fit_transform(dataset, columns = ['Col1', 'Col2'])
我收到以下错误:
ValueError: Pipeline.fit does not accept the columns parameter. You can pass parameters to specific steps of your pipeline using the stepname__parameter format, e.g. `Pipeline.fit(X, y, logisticregression__sample_weight=sample_weight)`.
如何将 columns
的值传递给函数?
另外,有人可以推荐我可以详细研究 sklearn 管道和预处理以及如何自定义这些过程的书籍或网站吗?
示例数据集:
import numpy as np
from sklearn.preprocessing import FunctionTransformer
from sklearn.pipeline import Pipeline
import pandas as pd
X = pd.DataFrame({'Col1':[1,2],'Col2':[3,4],'Col3':[5,6]})
你的函数:
def return_selected_dataset(dataset, columns):
return dataset[columns]
没有管道,它会像:
FunctionTransformer(return_selected_dataset,
kw_args={'columns':['Col1','Col2']}).transform(X)
注意管道,您只能将参数传递给每个拟合步骤, 见 the help page:
**fit_paramsdict of string -> object Parameters passed to the fit method of each step, where each parameter name is prefixed such that parameter p for step s has key s__p.
所以我认为你可以做的是:
pipe = Pipeline([
('Return_Col',
FunctionTransformer(return_selected_dataset,
kw_args={'columns':['Col1','Col2']})
)
])
pipe.fit_transform(X)
Col1 Col2
0 1 3
1 2 4