12 交叉验证与模型选择
12.1 简介
在构建预测模型时,选择合适的模型至关重要。不同的模型可能会对同一数据集产生不同的预测效果,因此需要通过某些方法来评估和选择模型。交叉验证是一种常用的技术,用于评估模型的表现并避免过拟合。
12.2 交叉验证
交叉验证是一种将数据分成多个子集,并对每个子集分别进行训练和测试的技术。最常见的形式是K折交叉验证,其中数据被分成K个子集,每次使用一个子集作为测试集,其余的作为训练集。
在Python中,scikit-learn
提供了cross_val_score
函数来执行K折交叉验证。
from sklearn.datasets import make_regression
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import cross_val_score
# 生成模拟数据
X, y = make_regression(n_samples=1000, n_features=10, noise=0.1, random_state=42)
# 构建线性回归模型
model = LinearRegression()
# 执行5折交叉验证
cv_scores = cross_val_score(model, X, y, cv=5)