四.模型验证

2018-10-22  本文已影响1人  愿风去了

模型验证就是在选择完模型和超参数之后,通过训练数据进行学习,对比模型对已知数据的预测值与世实际值的差异。

主要方式有留出集和交叉验证。

留出集

所谓留出集就是先从数据中取出一部分来,然后用这部分留出来的数据检验模型性能。

在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)))

上一篇 下一篇

猜你喜欢

热点阅读