#splitting data for validation set
X_train, X_val, y_train, y_val = dp.validation_split(train_X, train_y)

#scaling train and validation data
X_train, X_val = dp.scale_data(X_train, X_val)

#model is defined in the ModelBuilder class.
mb = ModelBuilder()
classifier = mb.get_classifier()

#cross-validation on smaller set of training data
mb.validate(classifier, X_train, y_train)
##Cross Validation - Accuracy : 98.11% (1.13%)

#evaluation model using validation set
mb.evaluate(classifier, X_train, y_train, X_val, y_val)
##Accuracy is 99.073%

#scaling train and test data
train_X, test_X = dp.scale_data(train_X, test_X)

#cross-validation on complete train data
mb.validate(classifier, train_X, train_y)
##Cross Validation - Accuracy : 98.57% (0.41%)

#Train with complete train data
classifier.fit(train_X, train_y, batch_size=10, epochs=100)

#predicting on test data
mb.check_prediction(classifier, test_X, test_y)
#Test Data - Accuracy is 98.279%