Python 如何在scikit learn或Neuraxe中并行运行2条管道?

Python 如何在scikit learn或Neuraxe中并行运行2条管道?,python,machine-learning,scikit-learn,pipeline,neuraxle,Python,Machine Learning,Scikit Learn,Pipeline,Neuraxle,我想用neuralaxe(我知道我可以使用其他库,但我想使用neuralaxe)创建一个简单的管道,在这里我想清理数据、分割数据、训练2个模型并比较它们 我希望我的管道可以执行以下操作: p=管道([ 预处理数据(), SplitData(), (通过上一步的分离,两个模型的训练都有了一些魔力) (“模型1”,模型1(参数)) (“模型2”,模型2(参数)) (评估) ]) 我不知道这是否可能,因为我在文档中找不到任何东西 此外,我还尝试使用了sklearn以外的其他型号(例如catboost

我想用
neuralaxe
(我知道我可以使用其他库,但我想使用
neuralaxe
)创建一个简单的管道,在这里我想清理数据、分割数据、训练2个模型并比较它们

我希望我的管道可以执行以下操作:

p=管道([
预处理数据(),
SplitData(),
(通过上一步的分离,两个模型的训练都有了一些魔力)
(“模型1”,模型1(参数))
(“模型2”,模型2(参数))
(评估)
])
我不知道这是否可能,因为我在文档中找不到任何东西

此外,我还尝试使用了
sklearn
以外的其他型号(例如
catboost
xgboost
…),但我发现了错误

AttributeError:'CatBoosStregressor'对象没有属性'setup'


我曾想过为模型创建一个类,但我不会使用超参数搜索
neuralaxe
是的!您可以这样做:

p = Pipeline([
    PreprocessData(),
    ColumnTransformer([
        (0, model1(params)),  # Model 1 will receive Column 0 of data
        ([1, 2], model2(params)),  # Model 2 will receive Column 1 and 2 of data
    ], n_dimension=2, n_jobs=2),
    (evaluate)
])
数据流将分为两部分

n_jobs=2
应该创建两个线程。还可以使用
joiner
参数传递用于将数据放回一起的自定义类。我们将很快发布一些更改,因此这应该可以正常工作。目前,管道使用1个线程

关于您的
CatBoostRegressor
模型,它类似于sklearn,但不是来自sklearn,在管道中声明模型时,您是否可以尝试执行
SKLearnRapper(model1(params))
而不是简单地执行
model1(params)
?即使您的对象与scikit learn的BaseEstimator具有相同的API,NeuralAxix可能也没有将该模型识别为scikit learn模型(scikit learn中的BaseEstimator对象)。因此,您可能需要在您的模型周围手动使用
SKLearnWrapper
,或者编写您自己的类似包装,以使您的类适应您的需求

相关的:


编辑

您可以使用NeuralAxes类。示例很快就会出现


另请参见此并行管道使用示例:

始终共享整个错误消息。