什么是k折交叉验证,k折交叉验证的意义和目的
Keras简介(1)在构造深度神经网络(DNN)解决多分类问题中,作者介绍了如何构造DNN模型解决虹膜数据集的多分类问题。
基于此,本文介绍了如何在Keras中实现K-turn交叉验证。
什么是K-turn交叉验证?K-fold交叉验证是机器学习的一个术语,指的是将原始数据随机分成K段。每次选取中小学作为训练集,其余作为测试集。重复交叉验证k次,以k次的平均正确率作为最终模型的评价指标。一般来说K=10,也就是10折交叉验证,如下图所示。
交叉验证的目的是获得一个可靠稳定的模型。K-cross validation可以有效提高模型的学习能力,类似于增加训练样本的数量,提高学习后模型的稳健性和鲁棒性。通过选择适当的k值,可以有效地避免过拟合。
基于Keras的k-turn交叉验证,我们构建了文章《Keras简介(1)深度神经网络(DNN)》,并对多分类问题的模型求解如下。
另外,我们对IRIS数据集采用了10%交叉验证,完整的实现代码如下。
# -编码:utf-8-# model _ train . py # python 3 . 6 . 8、TensorFlow 2.3.0、keras 2 . 4 . 3 # importkerasaskimportpandas aspdfromskneel . model _ selectioninimportkfold # CSV数据集read #此函数的参数包括csv_file_path: csv文件路径def load _ data(SV _ file _ path):iris=PD . read _ CSV)SV _ file _ SV move)target _ var目标变量class=iris [target _ varunique) # Target_var在range(len(class))的列中将目标变量转换为类变量iris (target _ var)(。apply)lambdax 3360 class _ Dar model def create _ model(:init=k . initializer . glorot _ uniform)seed=1)simple _ Adam=k . optimizer model . aad kernel _ initializer=init,activation= relu (model . add)activation= relu (model . add)activation= soft max )(model.com堆(loss= sparse _ category _ cross entropy),optimizer=simple_adam,Metrics=[ accuracy]: #1。CSV数据集打印(loadingirisdatatomery )n _ split=10 feet iris _ data . CSV )x=data[features]y=data[target]avg _ accuracy=0a VG _ loss=test _ index fold(n _ n)test _ index)x _ train,x _ test=x y _ test=y . iloc[train _ index],y . iloc[test _ index]print(create meme)epochs=80,verbose=0)print( model evaluation:,model.evaluate(x_testy _ test([1]avg _ loss=model . evaluate(x _ test,y _ test([0]print(kfoldaverageaccuracy 3360 { })。甲酸盐) )
迭代器丢失准确度10.000561 . 020 . 000211 . 030 . 0000221 . 040 . 006081 . 05052
这篇文章的代码存放在https://github.com/percent4/keras-k-fold-test.的github
感谢阅读~
020.1.24上海浦东