0%

交叉验证

交叉验证(Cross-Validation)是一种评估机器学习模型性能的方法,通过将数据集分成训练集和验证集来进行多次训练和测试。它有助于更准确地估计模型在未见过数据上的性能,并避免对单一验证集的过度拟合。

常见的交叉验证方法包括K折交叉验证和留一交叉验证。其中,K折交叉验证将数据集分成K个子集,依次将每个子集作为验证集,其余作为训练集,重复K次;留一交叉验证是K折交叉验证的特例,其中K等于数据集大小。交叉验证的结果通常是各次验证的平均性能。

以下是一个使用Python实现K折交叉验证的示例代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from sklearn.datasets import load_iris
from sklearn.model_selection import cross_val_score
from sklearn.svm import SVC

# 加载鸢尾花数据集
iris = load_iris()
X, y = iris.data, iris.target

# 创建SVM分类器
svm_model = SVC(kernel='linear', C=1.0, random_state=42)

# 进行5折交叉验证
scores = cross_val_score(svm_model, X, y, cv=5) # cv参数指定折数

print("Cross-Validation Scores:", scores)
print("Mean Score:", scores.mean())

在上述代码中,我们使用load_iris函数加载鸢尾花数据集,并创建了一个线性SVM分类器。然后,使用cross_val_score函数进行5折交叉验证,得到每次验证的性能分数。最后,我们打印出各次分数和平均分数。

通过交叉验证,可以更准确地估计模型的性能,并对模型进行调参。