# Possible to use predict_proba without normalizing to 1?

I'm using xgboost multi-class classifier to predict a collection of things likely to fail. I want to run that prediction, and report anything that the classifier identifies with probability > 75%. However if I use xgb.predict_proba(), the sum of the results in the array add up to 1. So, if there are a lot of things likely to fail, they will all have tiny percentages in the result array.

Looking at the predict_proba code, I can see where the array is getting normalized. However I can't figure out how to prevent this.

In the end, I think my code would look something like this (except with the pre-normalized probabilities):

probas = xgb.predict_proba(single_element_dataframe)

for class_name in xgb.classes_:
class_index = np.where(xgb.classes_ == class_name)
proba = probas[class_index]
if proba > 0:
print(f"{class_name}: {proba}")


Any ideas?

• If you are trying to using the classifier to classify multiple things that can fail at the same time it's probably better to use a separate model for each of the classes since the model assumes that only one class can be true at a time. Because of this the values are normalized to get the percentage for each class. Jul 20, 2021 at 8:31

Currently you're doing multiclass classification: find the most likely among N classes. Each class $$C$$ probability indicates how likely class $$C$$ is for the instance as opposed to any other class. This is why the probabilities sum to 1: in this setting, there is only one "correct" class, so two classes cannot both have high probability.
Based on your description you should use multi-label classification: find all the classes that apply to the instances among N classes. In this case each class $$C$$ probability indicates how likely this instance has class $$C$$ as opposed to not having class $$C$$ (i.e. independently from any other class). Naturally the consequence is that the probabilities don't sum to one, since they are independent of each other.