Learn by Coding Examples in Applied Machine Learning

Keras Deep Learning with 10-fold cross validation using sklearn

In [5]:
# ignore warnings
import warnings
warnings.filterwarnings("ignore")
In [7]:
from keras.models import Sequential
from keras.layers import Dense
from keras.wrappers.scikit_learn import KerasClassifier
from sklearn.model_selection import StratifiedKFold
from sklearn.model_selection import cross_val_score
import numpy

# Function to create model, required for KerasClassifier
def create_model():
    # create model
    model = Sequential()
    model.add(Dense(12, input_dim=8, activation='relu'))
    model.add(Dense(8, activation='relu'))
    model.add(Dense(1, activation='sigmoid'))
    
    # Compile model
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
    return model

# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)

# load pima indians dataset
dataset = numpy.loadtxt("pima.indians.diabetes.data.csv", delimiter=",")

# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]

# create model
model = KerasClassifier(build_fn=create_model, epochs=150, batch_size=10, verbose=0)

# evaluate using 10-fold cross validation
kfold = StratifiedKFold(n_splits=10, shuffle=True, random_state=seed)
results = cross_val_score(model, X, Y, cv=kfold)

print("Accuracy: "); print(results)
print('Mean: ', results.mean());
print('Std: ', results.std());  
Accuracy: 
[0.77922078 0.72727273 0.64935066 0.81818181 0.81818181 0.64935065
 0.66233767 0.64935065 0.64473685 0.65789474]
Mean:  0.7055878332122825
Std:  0.06970133666214075
In [ ]: