gpt4 book ai didi

python - 多输出堆叠回归器

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

一次性问题:我正在尝试构建一个 Multiputput Stacked Regressor(已添加到 sklearn 0.22)。据我所知,我必须结合使用 StackingRegressorMultiOutputRegressor。经过几次尝试,这似乎是正确的顺序:

import numpy as np 
from sklearn.ensemble import RandomForestRegressor
from sklearn.linear_model import OrthogonalMatchingPursuit
from sklearn.ensemble import StackingRegressor
from sklearn.neighbors import KNeighborsRegressor
from sklearn.multioutput import MultiOutputRegressor
from sklearn.svm import SVR

estimators = [ ('svr', SVR(kernel='rbf', C=1e3, gamma=0.1)),
('knn',KNeighborsRegressor(n_neighbors=5)),
('omp', OrthogonalMatchingPursuit())
]

reg = MultiOutputRegressor(StackingRegressor( estimators = estimators, final_estimator= RandomForestRegressor(n_estimators=5)))
X=np.random.random((200,20))
y = np.random.random((200,4))
reg.fit(X,y)

reg.predict(X)

但是 predict 方法以错误结束

*** ValueError: The base estimator should implement a predict method

我在 sklean 文件中搜索了这样的错误,它似乎与 MultiOutputRegressor 有关:

if not hasattr(self.estimator, "predict"):
raise ValueError("The base estimator should implement a predict method")

所以我试着查看self.estimator 模型:

reg.estimator.predict(X)

但我得到这个错误:

*** AttributeError: 'StackingRegressor' object has no attribute 'final_estimator_'

查看 reg.estimator 的属性我找不到 final_estimator_ 但只有 final_estimator 所以我的解决方案是创建这样的属性:

reg.estimator.final_estimator_ = reg.estimator.final_estimator

它可以工作,但我不再确定我的模型现在是否在做它应该做的事情(也许它对输出的每个坐标使用相同最终估计器)。这是 StackingRegressor + MultiOutputRegressor 组合导致的错误,还是我遗漏了什么?

谢谢!

最佳答案

在模型初始化中设置 stacking_method='predict',它应该可以正常工作。不知道为什么“自动”选项不起作用,但可以像这样快速修复:

model = StackingClassifier(estimators=level0, final_estimator=level1, stack_method='predict', cv=5)

关于python - 多输出堆叠回归器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60378363/

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