ROC_AUC_SCORE отличается при расчете с использованием предиката () и предиката () в случайном лесу - PullRequest
0 голосов
/ 31 мая 2019

Оба функции Предиката () и Предсказания () дают разные значения roc_auc_score в Случайном Лесу.

Я понимаю, что функция предиката () дает вероятности, такие как в случае двоичной классификации, она дает две вероятности, соответствующие обоим классам.Предсказание () дает класс, который он предсказал.

    #Using predict_proba()
    rf = RandomForestClassifier(n_estimators=200, random_state=39)
    rf.fit(X_train[['Cabin_mapped', 'Sex']], y_train)

    #make predictions on train and test set
    pred_train = rf.predict_proba(X_train[['Cabin_mapped', 'Sex']])
    pred_test = rf.predict_proba(X_test[['Cabin_mapped', 'Sex']].fillna(0))

    print('Train set')
    print('Random Forests using predict roc-auc: {}'.format(roc_auc_score (y_train, pred_train)))

    print('Test set')
    print('Random Forests using predict roc-auc: {}'.format(roc_auc_score(y_test, pred_test)))

   #using predict()

   pred_train = rf.predict(X_train[['Cabin_reduced', 'Sex']])
   pred_test = rf.predict(X_test[['Cabin_reduced', 'Sex']])

   print('Train set')
   print('Random Forests using predict roc-auc: {}'.format(roc_auc_score(y_train, pred_train)))
   print('Test set')
   print('Random Forests using predict roc-auc: {}'.format(roc_auc_score(y_test, pred_test)))

Набор поездов Случайные леса с использованием предиката roc-auc: 0.8199550985878832

Тестовый набор Случайных лесов с использованием preditc_proba roc-auc: 0.8332142857142857

Набор поездов "Случайные леса" с использованием предиката roc-auc: 0.7779440793041364

Набор тестов "Случайные леса" с использованием предиката roc-auc: 0.7686904761904761

1 Ответ

2 голосов
/ 31 мая 2019

Как вы сказали, функция predict возвращает прогноз в виде значения True / False, тогда как функция proba возвращает вероятности, значения от одного до нуля. и в этом причина разницы.

AUC означает «площадь под кривой», которая действительно отличается, если кривая представляет собой шаговую функцию 0/1 или кривую, состоящую из непрерывных значений.

Давайте представим, что у вас есть только один пример, он должен быть классифицирован как False. Если ваш классификатор дает вероятность 0,7, значение ROC-AUC составляет 1,0-0,7 = 0,3. Если вы использовали predict, прогноз будет True = 1,0, поэтому ROC-AUC будет 1,0-1,0 = 0,0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...