1

Я использую scikit-learn для реализации классификации с использованием логистической регрессии. Этикетки классов прогнозируются с использованием функции predict(), а предсказанные вероятности печатаются с использованием функции predict_proba().
Почему функция predict_proba печатает вероятности в обратном порядке?

фрагмент кода наклеена ниже:

# Partition the dataset into train and test data 
X_train, X_test, y_train, y_test = train_test_split(ds_X, ds_y, test_size=0.33, random_state=42) 

y_pred = logreg.predict(X_test)        # Predicted class labels from test features 
y_predicted_proba = logreg.predict_proba(X_test)   # Predicted probabilities from test features 


The предсказанных этикетки печатаются как

array([1, 1, 1, 1, 1, 1, 1, 1, 0, 1.......... and so on 

Соответствующая предсказывал вероятностей печатаются как

array([[ 0.03667012, 0.96332988], 
     [ 0.03638475, 0.96361525], 
     [ 0.03809274, 0.96190726], 
     [ 0.01746768, 0.98253232], 
     [ 0.02742639, 0.97257361], 
     [ 0.03676579, 0.96323421], 
     [ 0.02881874, 0.97118126], 
     [ 0.03082288, 0.96917712], 
     [ 0.65332179, 0.34667821], 
     [ 0.02091977, 0.97908023], 
        . 
        ' 
     and so on 

Заметим,
первым предсказал ярлык -
первым предсказал вероятность - [0,03667012, 0,96332988]

Почему 0,03667012 печатается первым, вместо 0.96332988? Должно ли быть другим?

+3

Первый столбец - это предсказанная вероятность для класса 0, вторая - прогнозируемая вероятность для класса 1. Вы говорите, что они должны печататься в самом высоком-низшем порядке? –

+0

Нет, способ, которым я интерпретировал, был дополнением к вероятности, которая сначала печатается. Но теперь мои сомнения очищены. Сначала прогнозируется прогнозируемая вероятность для класса 0, за которой следует вероятность для метки класса 1. Спасибо. – User456898

ответ

3

Столбец 0 - это вероятность для класса 0, а столбец 1 - вероятность для класса 1. Если у вас есть n классов, то форма вероятности выхода будет (n_examples, n_classes).