模型验证就是在选择完模型和超参数之后,通过训练数据进行学习,对比模型对已知数据的预测值与世实际值的差异。
主要方式有留出集和交叉验证。
留出集
所谓留出集就是先从数据中取出一部分来,然后用这部分留出来的数据检验模型性能。
在Sklearn-Learn中使用train_test_split工具就可以实现:
from sklearn.cross_validation import train_test_split
# 对每个数据集分一半数据
# random_state=0每次随机划分数不同,1每次划分数相同
X1, X2, y1, y2 = train_test_split(X, y, random_state=0, train_size=0.5)
留出类似新数据,这样模型就能够利用数据进行预测验证。
交叉验证
留出集的缺点在于模型失去了一部分训练数据。
解决这个问题的方法就是使用交叉验证,也就是做一组拟合,让数据的每个子集既是训练数据,又是验证集。
交叉验证将数据分为若干组,每一次用模型拟合其中的n-1组数据,再预测剩下的那1组数据,最终选取均值来评估模型的准确率。
极端情况下,每次只有一个样本做测试,其他样本全部用于训练,这种交叉验证模式被称为LOO(leave-one-out,只留一个)交叉验证。
具体用法为:
from sklearn.cross_validation import LeaveOneOut
# 使用cross_val_score函数可以快速计算准确率
scores = cross_val_score(model, X, y, cv=LeaveOneOut(len(X)))












网友评论