1 模型评估方法
在现实任务中,往往有很多模型可供选择,一般我们是通过对候选模型的泛化误差进行估计,选择泛化误差最小的那个模型。因此,需要一个“测试集”来检测学习器对新样本的判别能力,然后以测试集上的“测试误差”作为泛化误差的近似,这里我们假设测试集也是从样本真实分布中独立同分布采样得到的。
假设学习任务中的有一个包含 m m m个样本的数据集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x m , y m ) } D=\{(\textbf{x}_1,y_1),(\textbf{x}_2,y_2),\cdots,(\textbf{x}_m,y_m)\} D={ (x1,y1),(x2,y2),⋯,(xm,ym)},我们可以通过适当的处理,从中产生出训练集 S S S和测试集 T T T,要求 T T T与 S S S尽可能互斥,即测试样本尽量不在训练集中出现、未在训练过程中使用过。下面介绍几种常见的划分方式。
1.1 留出法
“留出法”直接将数据集 D D D划分为两个互斥的集合,一个为训练集 S S S,一个为测试集 T T T,即 D = S ∪ T , S ∩ T = ∅ . D=S\cup T,S\cap T=\emptyset. D=S∪T,S∩T=∅.在 S S S上进行模型学习,然后用 T T T来评估其测试误差,作为对泛化误差的估计。
单次使用留出法得到的估计结果往往不够稳定可靠,在使用留出法时,一般要采用若干次随机划分、重复进行模型评估后取平均值作为留出法的评估结果。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Feb 25 10:57:29 2019
@author: lihui
"""
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC #导入支持向量机分类算法
from sklearn.metr