I have been trying to revisit my python code for prediction on neural network and i realized after running the code that model.predict_classes
is deprecated since 1st Jan 2021.
Kindly can you support me to know what i can use instead for my code ?
The code line is:
y_pred_nn = model.predict_classes(X_test)
The issue:
NameError
Traceback (most recent call last)
<ipython-input-11-fc1ddbecb622> in <module>
----> 1 print(y_pred_nn)
NameError: name 'y_pred_nn' is not defined
Understanding the predict() function in Python This is when the predict() function comes into the picture. Python predict() function enables us to predict the labels of the data values on the basis of the trained model. The predict() function accepts only a single argument which is usually the data to be tested.
Model. predict passes the input vector through the model and returns the output tensor for each datapoint. Since the last layer in your model is a single Dense neuron, the output for any datapoint is a single value. And since you didn't specify an activation for the last layer, it will default to linear activation.
The best explanation of how to handle this is given at:
https://androidkt.com/get-class-labels-from-predict-method-in-keras/
First use model.predict()
to extract the class probabilities. Then depending on the number of classes do the following:
Use a threshold to select the probabilities that will determine class 0 or 1
np.where(y_pred > threshold, 1,0)
For example use a threshold of 0.5
Select the class with the highest probability
np.argmax(predictions, axis=1)
Where you can have multiple output classes per example, use a threshold to select which labels apply.
y_pred = model.predict(x, axis=1)
[i for i,prob in enumerate(y_pred) if prob > 0.5]
If your model performs multi-class classification (e.g. if it uses a softmax last-layer activation) use:
np.argmax(model.predict(x), axis=-1)
If your model performs binary classification (e.g. if it uses a sigmoid last-layer activation) use:
(model.predict(X_test) > 0.5).astype("int32")
model.predict_classes
is deprecated, as mentioned by @Kaveh, use model.predict()
function instead.
np.argmax(model.predict(x_test), axis=-1)
To know more about model.predict() check this link.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With