Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

model.predict_classes is deprecated - What to use instead?

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
like image 731
Ahmad Avatar asked Aug 13 '21 18:08

Ahmad


People also ask

How do you predict a model in python?

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.

What does model predict return keras?

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.


3 Answers

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:

Binary Classification

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

Mutli-class Classification

Select the class with the highest probability

np.argmax(predictions, axis=1)

Multi-label Classification

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]
like image 68
Dean Povey Avatar answered Oct 20 '22 16:10

Dean Povey


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")

like image 45
DRozen Avatar answered Oct 20 '22 14:10

DRozen


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.

like image 2
TFer Avatar answered Oct 20 '22 14:10

TFer