In machine learning, our main motive is to create a model that can predict the output from new data. We can do this by training the model.
So this recipe is a short example of how to make predictions using keras model?
import pandas as pd import numpy as np from keras.datasets import mnist from sklearn.model_selection import train_test_split from keras.models import Sequential from keras.layers import Dense from keras.layers import Dropout
We have imported pandas, numpy, mnist(which is the dataset), train_test_split, Sequential, Dense and Dropout. We will use these later in the recipe.
Here we have used the inbuilt mnist dataset and stored the train data in X_train and y_train. We have used X_test and y_test to store the test data.
(X_train, y_train), (X_test, y_test) = mnist.load_data()
We have created an object model for sequential model. We can use two args i.e layers and name.
model = Sequential()
Now, We are adding the layers by using 'add'. We can specify the type of layer, activation function to be used and many other things while adding the layer.
Here we have added four layers which will be connected one after other.
We can compile a model by using compile attribute. Let us first look at its parameters before using it.
model.compile(optimizer='Adam', loss='categorical_crossentropy', metrics=['accuracy'])
We can fit a model on the data we have and can use the model after that. Here we are using the data which we have splitted i.e the training data for fitting the model.
While fitting we can pass various parameters like batch_size, epochs, verbose, validation_data and so on.
After fitting a model we want to evaluate the model. Here we are using model.evaluate to evaluate the model and it will give us the loss and the accuracy. Here we have also printed the score.
score = model.evaluate(X_test, y_test, verbose=0)
print('Test loss:', score)
print('Test accuracy:', score)
Finally we are predicting the output for this we are using another part of the data that we get from test_train_split i.e. test data. We will use it and predict the output.
y_pred = model.predict(X_test)
As an output we get:
Epoch 1/2 469/469 [==============================] - 7s 14ms/step - loss: 0.3174 - accuracy: 0.9033 - val_loss: 0.1212 - val_accuracy: 0.9630 Epoch 2/2 469/469 [==============================] - 6s 14ms/step - loss: 0.1560 - accuracy: 0.9534 - val_loss: 0.0918 - val_accuracy: 0.9720 Test loss: 0.09184003621339798 Test accuracy: 0.972000002861023 [[8.92436292e-10 1.32853462e-09 6.39653945e-06 ... 9.99989152e-01 1.79315840e-09 2.44941958e-07] [9.11153306e-11 1.03196271e-05 9.99982357e-01 ... 1.89035987e-09 9.82423032e-09 8.40081246e-14] [1.10766098e-06 9.99514341e-01 1.26151179e-04 ... 1.44331687e-04 4.99823145e-05 6.05678633e-06] ... [2.03985762e-09 1.29704825e-08 2.95020914e-08 ... 1.23884201e-05 6.87194824e-06 1.75449488e-04] [5.91818647e-08 1.97798578e-08 7.46679774e-10 ... 5.06311437e-09 1.96506153e-04 1.14137793e-08] [1.13083731e-09 5.45665553e-12 2.54836174e-09 ... 3.70580059e-13 6.02386641e-10 3.15489106e-12]]