ROC_AUC_SCORE在random forest中使用predict()与predict_proba()进行计算时有所不同

时间:2019-05-31 14:39:32

标签: python-3.x machine-learning scikit-learn random-forest

predict()和predict_proba()在随机森林中都提供了不同的roc_auc_score。

我知道predict_proba()给出了概率,例如在二进制分类的情况下,它将给出对应于两个类的两个概率。 预报()给它预测的类。

    #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)))

使用predict_proba roc-auc训练集随机森林:0.8199550985878832

使用preditc_proba roc-auc测试集随机森林:0.8332142857142857

使用预测roc-auc训练随机森林:0.7779440793041364

使用预测roc-auc测试集随机森林:0.7686904761904761

2 个答案:

答案 0 :(得分:2)

正如您所说,predict函数以True / False值的形式返回预测,而proba函数返回的概率为1到0 这就是造成差异的原因。

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。

答案 1 :(得分:0)

Predict返回0或1作为输出。

Predict_proba返回1的概率。