我想创建一个循环来比较机器学习模型的分数,但生成了“解包的值过多(预期2)”的错误。如何解决这个问题?
from sklearn.linear_model import LinearRegressionfrom sklearn.linear_model import Ridgefrom sklearn.linear_model import Lassofrom sklearn.linear_model import ElasticNetfrom sklearn.ensemble import GradientBoostingRegressornames=[]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
回答:
你好,这是因为你在遍历一个字典。字典存储键值对。如果你想同时访问键和值,可以在字典后面加上.items()。
for name, model in models.items():
如需进一步阅读,请查看这个!