我训练的模型很少,并且想要在单个图形上绘制每个模型的学习曲线
我尝试了这个,然后工作了。但这感觉多余。
train_sizes, train_scores, test_scores = learning_curve(model,
train_dummies,
y,
cv=5,
scoring='neg_mean_squared_error')
因为我需要为每个模型重复train_scores和test_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()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句