'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
Solution 1:[1]
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]
Solution 2:[2]
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")
Solution 3:[3]
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.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | |
Solution 2 | DRozen |
Solution 3 |