【机器学习应用】【Python】模型评估(1)—— 交叉验证Cross Validation
以KNN算法举例,在某一组训练集与测试集的数据下可能k=3准确率最高,换一组可能就k=5最高,因此得出的结果不够客观。如果重复多次随机抽样分组,实际上到最后模型已经“见过”所有数据,不能反映模型真实准确率情况。
交叉验证
将数据划分为多组,通过多组组合分别组合成训练集和测试集,然后取不同的数据集组合的准确率作为该样本的准确率。
举例来说,我们将手里的数据随机分为四组数据(分别标为a,b,c,d),我们每次选择其中的一组作为测试集,其他三组作为训练集,就能够得到abc,abd,acd,bcd四组训练集组合。
分成四组,就进行四次测试,然后再将四次的预测结果取平均,得到模型的一个综合准确度。
为了防止模型在交叉检验时就“看”到了所有的数据,我们在交叉检验前可将数据先分成训练集和测试集,只用训练集去做交叉检验,最后再用测试集去检验模型的最终效果。在交叉检验中验证模型的数据集又叫做验证集(validation)
cross_val_score()
我们可以直接使用cross_val_score()
对数据进行交叉检验,默认的检验次数为5。
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split, cross_val_score
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
# 加载数据
iris_data =<