如何基于已有保留集绘制训练与验证数据的学习曲线?sklearn learning_curve()无此参数
使用预先划分的保留验证集绘制学习曲线
当然可以!虽然scikit-learn的learning_curve()函数确实没有直接支持使用预先定义好的保留验证集(holdout set)的参数,但我们可以手动模拟它的核心逻辑,转而用固定的holdout集来评估模型,具体步骤如下:
核心思路
- 将已有的训练集拆分成不同大小的训练子集(比如从10%到100%的训练样本量)
- 在每个训练子集上训练模型,分别计算模型在自身训练子集和固定保留验证集上的得分
- 把不同训练子集对应的得分绘制成曲线,就是我们需要的学习曲线
代码示例
下面以鸢尾花数据集和SVM分类器为例,展示具体实现:
import numpy as np import matplotlib.pyplot as plt from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.svm import SVC # 1. 加载数据并预先划分训练集与保留验证集 X, y = load_iris(return_X_y=True) X_train, X_holdout, y_train, y_holdout = train_test_split( X, y, test_size=0.2, random_state=42 ) # 2. 定义训练集大小的比例(从10%到100%,取10个间隔点) train_sizes = np.linspace(0.1, 1.0, 10) # 3. 存储训练得分和保留验证集得分 train_scores = [] holdout_scores = [] # 4. 遍历每个训练集大小,训练模型并计算得分 n_repeats = 5 # 对每个样本量重复5次取平均,让曲线更稳健 for train_size in train_sizes: n_samples = int(train_size * len(X_train)) temp_train = [] temp_holdout = [] for _ in range(n_repeats): # 随机选择对应数量的训练样本 idx = np.random.choice(len(X_train), n_samples, replace=False) X_subtrain, y_subtrain = X_train[idx], y_train[idx] # 训练模型 model = SVC() model.fit(X_subtrain, y_subtrain) # 记录得分 temp_train.append(model.score(X_subtrain, y_subtrain)) temp_holdout.append(model.score(X_holdout, y_holdout)) # 取多次重复的平均值 train_scores.append(np.mean(temp_train)) holdout_scores.append(np.mean(temp_holdout)) # 5. 绘制学习曲线 plt.figure(figsize=(10, 6)) plt.plot(train_sizes, train_scores, label='Training Score', color='#1f77b4', linewidth=2) plt.plot(train_sizes, holdout_scores, label='Holdout Validation Score', color='#ff7f0e', linewidth=2) plt.xlabel('Training Set Size (Proportion of Full Training Data)') plt.ylabel('Accuracy') plt.title('Learning Curve with Fixed Holdout Validation Set') plt.legend() plt.grid(alpha=0.3) plt.show()
关键细节说明
- 加入
n_repeats参数是为了减少随机采样带来的方差,让学习曲线更平滑;如果追求速度,也可以只做一次采样 - 你可以替换代码中的模型(比如用
RandomForestClassifier)和数据集,适配自己的任务 - 这个方法完全兼容回归任务,只需要把得分指标换成回归对应的(比如
r2_score或者mean_squared_error)
内容的提问来源于stack exchange,提问作者nopact
相关产品推荐
相关产品推荐

