# How Do I get 0 and 1 For multiclass multilabel problem in Keras prediction?

Let's say I have 3 classes, and each sample can belong to any of those classes.

[
[1 0 0]
[0 1 0]
[0 0 1]
[1 1 0]
[1 0 1]
[0 1 1]
[1 1 1]
]


I set my output as Dense(3, activation="sigmoid"), and I compiled with optimizer="adam", loss="binary_crossentropy". I guet 0.05 for loss, and 0.98 for accuracy, according to Keras output.

I thought I would get only 1 or 0 for prediction if I use sigmoid and binary_crossentropy. However, model.predict(training-features) gave me values between 1 and 0.

Then I clipped the values at 0.5 like below and checked accuracy_score(training_labels, preds). The score dropped to 0.1.

preds[preds>=0.5] = 1
preds[preds<0.5] = 0


I'd appreciate if someone could give me some guidance on how I should approach this problem.

Thanks!

## 1 Answer

Okay, things you need to correct in your approach:

1. If you have 3 labels/classes, you should one-hot encode your y_train.
2. You probably should use loss=categorical_crossentropy in compile for more than 2 classes.
3. Your final activation function should be a softmax and not a sigmoid. You are getting prediction values between 0 and 1, because that's what sigmoid does.

Now, if you take an argmax on your prediction output, you can see the class with the highest confidence score.

• Thanks. However, all the posts I read so far suggest, I should use Sigmoid for activation at the end and binary_crossentropy for loss when working with multiclass multilabel. Not true? depends-on-the-definition.com/… stats.stackexchange.com/questions/207794/… github.com/keras-team/keras/issues/10371 – jl303 Apr 21 at 2:59
• – Anakin Apr 21 at 15:23
• Btw, you have a multiclass classification problem but not multilabel – Anakin Apr 21 at 15:28
• Also have a look at this post towardsdatascience.com/… – Anakin Apr 21 at 15:34
• Thanks @Anakin. Isn't it multi class multi label When there are more than 2 classes, and when a sample can be belong to more than one class at the same time? Multiclass: "fruit can be either an apple or a pear but not both at the same time." Multilabel: "A text might be about any of religion, politics, finance or education at the same time or none of these." scikit-learn.org/stable/modules/multiclass.html – jl303 Apr 23 at 0:56