簡體   English   中英

如何在同一張圖上繪制來自不同模型的多條學習曲線?

[英]How to plot multiple learning curve from different model on the same graph?

我訓練的模型很少,並且想在單個圖上繪制每個模型的學習曲線

我試過這個,並且成功了。 但感覺是多余的。

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

因為我需要為每個模型重復train_scorestest_scores

我嘗試使用for循環。

首先,我將模型保存在一個數組中。

arr = [m1,m2,m3]

但是當我開始for循環時,它只在圖表上生成了一行。

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")

這是所需的輸出

期望輸出

有人會告訴我我缺少什么嗎? 非常感謝您的時間。

我看不出你在做什么。這對我有用(部分取自這里):

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM