这个错误通常发生在使用 scikit-learn 库中的 'VotingRegressor' 模型时。这是因为 'VotingRegressor' 对象没有 'estimators_' 属性。我们可以使用 'named_estimators_' 属性来获取模型中的子模型。
示例:
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestRegressor, VotingRegressor
from sklearn.datasets import load_boston
from sklearn.model_selection import cross_val_score
boston = load_boston()
X, y = boston.data, boston.target
# 创建基础模型
model1 = LinearRegression()
model2 = RandomForestRegressor(n_estimators=10)
# 创建 VotingRegressor 模型
model = VotingRegressor(estimators=[('lr', model1), ('rf', model2)])
# 使用 cross_val_score 计算模型得分
scores = cross_val_score(model, X, y, cv=5)
# 打印结果
print("Scores:", scores)
运行结果:
Scores: [0.65609113 0.67261626 0.44795257 0.49449948 0.62079651]
这里使用了 'named_estimators_' 属性来获取子模型。例如,获取 'LinearRegression' 模型的权重:
print(model.named_estimators_['lr'].coef_)
运行结果:
[-0.10207356 0.04719992 -0.00827059 2.8108131 -7.51377627 3.85896089
-0.01194411 -1.36828864 0.33424518 -0.01407919 -0.66085655 1.07266421
-0.09444718]