python - 如何创建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
解决方案
嗨,这是因为你正在循环一个字典。字典存储一个键值对。如果您想访问两者,可以通过在 dict 后面添加 .items() 来实现。
for name, model in models.items():
为了进一步阅读,看看这个!
推荐阅读
- javascript - 如何设置 div onclick 的背景?
- json - 在 Flask Web 应用程序中,如何使用搜索框过滤器显示 json 文件数据?
- c - C中的ADT(使用头文件、源文件和主文件)
- python - 从文件名更改日期格式并加入多个 csv 文件中的每小时数据
- google-sheets - 我可以使用什么公式来获取与 Google 表格中 MAX() 的结果相关联的单元格?
- html - 调整窗口大小时布尔玛卡改变宽度
- c++ - 您可以在 C++ 中为方法名称起别名吗?
- python - 带有来自不同不相关模型的 pk 的 Django CreateView 成功 url
- mysql - 尝试通过 RMariaDB 连接 MySQL 数据库时出现 RSession 致命错误
- javascript - 使用 puppeteer 截取屏幕截图并将其存储在谷歌云存储中