Как создать для l oop сравнение показателей поезда и теста для моделей линейной регрессии - PullRequest
2 голосов
/ 09 марта 2020

Я хочу создать l oop для сравнения результатов модели машинного обучения, но выдаю ошибку «слишком много значений для распаковки (ожидается 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

1 Ответ

2 голосов
/ 09 марта 2020

Привет, это потому что вы зациклены на диктовке. В словаре хранится пара ключ-значение. Если вы хотите получить доступ к обоим, вы можете сделать это, добавив .items () после dict.

for name, model in models.items():

Для дальнейшего чтения взгляните на this !

...