首页 > 解决方案 > 如何创建for循环来比较线性回归模型的训练和测试分数

问题描述

我想创建循环来比较机器学习模型的分数,但会生成错误“太多值无法解包(预期 2)”。如何解决问题?

from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Ridge
from sklearn.linear_model import Lasso
from sklearn.linear_model import ElasticNet
from sklearn.ensemble import GradientBoostingRegressor

names=[]
train_scores =[]
test_score =[]

models={'OLS': LinearRegression(),
       'Ridge': Ridge(),
       'Lasso': Lasso(),
       'ElasticN': ElasticNet(),
       'GBReg': GradientBoostingRegressor()}

for name, model in models:
    name_model = model
    name_fit = name_model.fit(X_train, y_train)
    name_pred = name_model.predict(X_test)
    name_train_score = name_model.score(X_train, y_train).round(4)
    name_test_score = name_model.score(X_test, y_test).round(4)
    names.append(name)
    train_scores.append(name_train_score)
    test_scores.append(name_test_score)

score_df = pd.DataFrame(names, train_scores, test_scores)
score_df

标签: pythonmachine-learningscikit-learn

解决方案


嗨,这是因为你正在循环一个字典。字典存储一个键值对。如果您想访问两者,可以通过在 dict 后面添加 .items() 来实现。

for name, model in models.items():

为了进一步阅读,看看这个


推荐阅读