gpt4 book ai didi

scikit-learn - 将两个拟合的估计器组合成一个管道

转载 作者:行者123 更新时间:2023-12-05 01:46:03 24 4
gpt4 key购买 nike

我有两个阶段的数据:

import numpy as np

data_pre = np.array([[1., 2., 203.],
[0.5, np.nan, 208.]])

data_post = np.array([[2., 2., 203.],
[0.5, 2., 208.]])

我还有两个预先存在的拟合估计器:

from sklearn.preprocessing import Imputer
from sklearn.ensemble import GradientBoostingRegressor

imp = Imputer(missing_values=np.nan, strategy='mean', axis=1).fit(data_pre)
gbm = GradientBoostingRegressor().fit(data_post[:,:2], data_post[:,2])

我需要将合适的管道和 data_pre 传递给另一个函数。

def the_function_i_need(estimators):
"""
"""
return fitted pipeline

fitted_pipeline = the_function_i_need([imp, gbm])
sweet_output = static_function(fitted_pipeline, data_pre)

有没有一种方法可以将这两个现有的和已拟合的模型对象组合成一个已拟合的管道,而无需重新拟合模型,或者我运气不好?

最佳答案

我试着调查了一下。我找不到任何直接的方法来做到这一点。

我觉得唯一的方法是编写一个自定义转换器,作为现有 Imputer 和 GradientBoostingRegressor 的包装器。您可以使用已经安装好的 Regressor 和/或 Imputer 初始化包装器。然后,您可以通过不执行任何操作来覆盖对 fit 的调用。在所有后续的 transform 调用中,您可以调用底层拟合模型的 transform。这是一种肮脏的做法,除非这对您的应用程序非常重要,否则不应这样做。可以找到有关为 Scikit-Learn 管道编写自定义类的好教程 here .可以在 scikit-learn 的文档中找到自定义管道对象的另一个工作示例 here .

关于scikit-learn - 将两个拟合的估计器组合成一个管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37890384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com