如何使用自定义功能创建sklearn管道? 我有两个功能,一个用于清理数据,第二个用于构建模型。
def preprocess(df):
……………….
# clean data
return df_clean
def model(df_clean):
…………………
#split data train and test and build randomForest Model
return model
所以我使用FunctionTransformer并创建了管道
from sklearn.pipeline import Pipeline, make_pipeline
from sklearn.preprocessing import FunctionTransformer
pipe = Pipeline([("preprocess", FunctionTransformer(preprocess)),("model",FunctionTransformer(model))])
pred = pipe.predict_proba(new_test_data)
print(pred)
我知道上面是错误的,不确定如何处理,在管道中我需要先通过训练数据,然后我必须通过new_test_data?
答案 0 :(得分:2)
您需要创建自己的类,该类继承sklearn的BaseEstimator,TransformerMixin。
然后在您自己的类的fit / transform / fit_transform / predict / predict_prob等函数中指定函数。
答案 1 :(得分:0)
一个更好、更简单的方法是使用 Kedro
,它不关心对象类型,您可以编写任何自定义函数以在管道内使用。您可以使用 kedro.Pipeline
将所有函数按顺序排列并像在 sklearn 管道中一样调用它们。语法与 sklearn 略有不同,但更灵活。
您可以了解有关 kedro
here 或其官方文档的更多信息。