我试着用这个函数一次使用多个回归器元素
def regressors(x_train,y_train,xtest,ytest):
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import AdaBoostRegressor
from sklearn.linear_model import ARDRegression,LinearRegression,SGDRegressor
regressor = *AdaBoostRegressor(),*RandomForestRegressor(),*LinearRegression(),*SGDRegressor()
for r in regressor:
r.fit(x_train,y_train)
pred = r.predict(xtest)
print(r.__class__.__name__)
print(mean_squared_error(pred,ytest))
print(r2_score(pred,ytest))
print('\n')
regressors(x_train,y_train,xtest,ytest)
它总是返回AttributeError: 'AdaBoostRegressor' object has no attribute 'estimators_'
或任何已设置为指针列表中第一个的回归器的追溯,尽管在我单独使用它们时,它们中的任何一个都运行良好,就像在这段代码中一样。
rfr = RandomForestRegressor()
abr = AdaBoostRegressor()
abr.fit(x_train,y_train)
rfr.fit(x_train,y_train)
pred = abr.predict(xtest)
predr = rfr.predict(xtest)
print(mean_squared_error(ytest,pred),r2_score(ytest,pred))
print(mean_squared_error(predr,ytest), r2_score(predr,ytest))
但是我不想写意大利面代码,所以我尝试了这个函数,任何人都可以帮助我克服这个错误,我想知道为什么它会使用估值器,当我没有在函数代码中指定任何估值器时,我看到了一些使用df.at()
的解决方案,但是它对我没有用。
发布于 2022-06-30 15:00:47
我认为您必须这样写,因为回归器不是可迭代的:
regressor = [AdaBoostRegressor(),RandomForestRegressor(),LinearRegression(),SGDRegressor()]
https://stackoverflow.com/questions/72817394
复制相似问题