Как построить кривую множественного обучения из разных моделей на одном графике? - PullRequest
1 голос
/ 28 марта 2019

У меня есть несколько моделей, которые я обучил, и я хотел построить кривую обучения каждой модели на одном графике

Я попробовал это и работал.Но это казалось излишним.

train_sizes, train_scores, test_scores = learning_curve(model, 
                                                        train_dummies, 
                                                        y,
                                                        cv=5,
                                                      scoring='neg_mean_squared_error')

Потому что мне нужно повторить train_scores и test_scores для каждой модели .

Я попытался, используя для цикла.

Сначала я сохранил модели в массиве.

arr = [m1,m2,m3]

Но когда я запустил для loop, он выдает только одну строку на графике.

for i in arr:
  train_sizes, train_scores, test_scores = learning_curve(i, 
                                                    train_dummies, 
                                                    y,
                                                    cv=5,
                                              scoring='neg_mean_squared_error')
  train_mean = np.mean(train_scores, axis=1)
  train_std = np.std(train_scores, axis=1)

  test_mean = np.mean(test_scores, axis=1)
  test_std = np.std(test_scores, axis=1)


  plt.plot(train_sizes, test_mean, label="Cross-validation score")

Вот желаемый вывод

Desired output

Будет кто-топокажи мне, чего мне не хватает?Ваше время высоко ценится.

1 Ответ

1 голос
/ 01 апреля 2019

Я ничего не могу определить, что вы делаете .. Это работает для меня (взято от здесь ):

import numpy as np
import matplotlib.pyplot as plt
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
from sklearn.datasets import load_digits
from sklearn.model_selection import learning_curve

digits = load_digits()
X, y = digits.data, digits.target
for i in [GaussianNB(), SVC(gamma=0.001)]:
    (train_sizes,
     train_scores,
     test_scores) = learning_curve(i, X, y, cv=5)
    test_mean = np.mean(test_scores, axis=1)
    plt.plot(train_sizes, test_mean, label="Cross-validation score")

plt.legend()
plt.show()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...