交叉验证

基本概念

交叉验证(cross-validation),亦称循环估计。是一种统计学上将数据样本切割成较小子集的实用方法。于是可以先在一个子集上进行学习,而其他的子集用来后续的确认及验证。
在机器学习中,为了充分挖掘数据集中的信息,我们将数据集分割为三个部分:
- 训练集(trainning set):用来训练模型
- 验证集(validation set):用来模型的选择
- 测试集(test set):用来最终对学习方法的评估

目标

交叉验证在模型的训练阶段就定义了“测试”的数据集,以便减少诸如过拟合这样的问题。主要有以下两个目标:

常见的交叉验证形式

最为基础的一种交叉验证叫做** K-fold交叉验证 **,剩余形式都是K-fold的特殊情况,或者是引入了轮循的K-fold。

几种验证形式的优缺点比较:

关键应用

sklearn之实现( sklearn:model_selection

You can just use the function : train_test_split() to split the datasets,like this:

I can split the datasets to two parts: one is for trainning ,the other is for testing like the code indicates.
But the problem is over-fitting.
So I can use cross-validation to solve it.

Computing cross-validated metrics

I will use these functions below:
- cross_val_score()
- cross_validate()
- cross_val_predict()

from sklearn import datasets # datasets
from sklearn import svm
from sklearn import model_selection as ms
import numpy as np

iris = datasets.load_iris()

clf = svm.SVC(kernel='linear', C = 1.0)
#clf.fit(iris.data, iris.target)
scores = ms.cross_val_score(clf, iris.data, iris.target, cv = 10)
print(scores) #
prediction = ms.cross_val_predict(clf, iris.data, iris.target, cv = 10)

validation = ms.cross_validate(clf, iris.data, iris.target, cv = 10) # version >= 19
print(dir(validation))

Cross validation iterators

链接

评论已关闭。

X