Keras模型进行交叉验证

交叉验证

交叉验证的基本思想是把在某种意义下将原始数据(dataset)进行分组,一部分做为训练集(train set),另一部分做为验证集(validation set or test set),首先用训练集对分类器进行训练,再利用验证集来测试训练得到的模型(model),以此来做为评价分类器的性能指标。

Keras模型交叉验证

本次案例数据集采用鸢尾花的分类数据集
导入模块

from sklearn.model_selection import cross_val_score
from sklearn.datasets import load_iris
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import KFold
from keras.utils.np_utils import to_categorical
import keras

导入数据

iris = load_iris()
seed = 7
X = iris.data
Y = iris.target

观察数据
Keras模型进行交叉验证_第1张图片
我们需要将标签进行独热编码

Y_encode = to_categorical(Y)

Keras模型进行交叉验证_第2张图片
构建深度学习网络模型

def build_model():
    model = keras.models.Sequential()
    model.add(keras.layers.Dense(7,activation='tanh',input_shape=(4,)))
    model.add(keras.layers.Dense(3,activation="softmax"))
    model.compile(loss="categorical_crossentropy",optimizer='sgd',metrics=['accuracy'])
    return model

交叉验证

model = KerasClassifier(build_fn=build_model, epochs=20, batch_size=1)
kfold = KFold(n_splits=10,shuffle=True,random_state=seed)
result = cross_val_score(model,X,Y_encode,cv=kfold)

n_splits=10代表进行十次交叉验证
查看交叉验证结果

print("============")
print("mean:",result.mean())
print("std:",result.std())

Keras模型进行交叉验证_第3张图片
交叉验证平均accuracy为0.9000000059604645
accuracy标准差为0.0906764646534975

你可能感兴趣的:(深度学习,深度学习,机器学习,神经网络,keras,tensorflow)