模型验证 — 交叉验证Cross Validation的方法
目录
简单交叉验证
K折交叉验证
留一法交叉验证
留P法交叉验证
ShuffleSplit
StratifiedShuffleSplit
StratifiedKFold
交叉验证(Cross Validation)是验证模型性能的一种统计分析方法,其基本思想是在某种意义下将原始数据进行分组,一部分作为模型的训练数据集(训练集),另一部分作为模型的验证数据集(验证集)。首先用训练集对模型进行训练,再利用验证集来测试训练得到的模型,以此来作为评价模型的性能指标。常用的交叉验证方法有简单交叉验证、K折交叉验证、留一法交叉验证和留P法交叉验证。
本文以一个模拟的线性回归模型为例来介绍各种交叉验证方法。代码如下:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
# 模拟数据
n_samples = 100 # 样本数量.
slope = 3 # 斜率
intercept = 5 # 截距
noise = 2 # 噪声
# 生成100个样本.
np.random.seed(0) # 保证每次代码运行生成的样本数据一样.
X = np.linspace(0, 10, n_samples).reshape(-1, 1)
y = slope * X.ravel() + intercept + np.random.normal(0, noise, n_samples)