在随机林中使用Forecast()和Predict_Proba()进行计算时,ROC_AUC_Score不同 [英] ROC_AUC_SCORE is different while calculating using predict() vs predict_proba() in Random Forest

查看:17
本文介绍了在随机林中使用Forecast()和Predict_Proba()进行计算时,ROC_AUC_Score不同的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在随机林中预测()和预测_Proba()产生不同的ROC_AUC_Score。

我知道Forecast_Proba()给出了概率,比如在二进制分类的情况下,它会给出两个对应于两个类别的概率。 Forecate()给出它预测的类。

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

使用PROJECT_PROBA ROC-AUC:0.8199550985878832的列车集随机森林

使用PRODITC_PROBA ROC-AUC:0.8332142857142857测试设置随机林

使用预测ROC-AUC:0.7779440793041364的训练集随机森林

使用预测ROC-Auc:0.7686904761904761测试随机森林集

推荐答案

如您所说,predict函数以True/False值返回预测值,而proba函数返回概率,值介于1和0之间 这就是差异的原因。

AUC的意思是"曲线下面积",如果曲线是0/1阶跃函数或由连续值组成的曲线,则AUC确实不同。

假设您只有一个示例,它应该被归类为False。如果您的分类器得出的概率为0.7,则ROC-AUC值为1.0-0.7=0.3。如果使用predict,则预测值将为True=1.0,因此ROC-AUC将为1.0-1.0=0.0。

这篇关于在随机林中使用Forecast()和Predict_Proba()进行计算时,ROC_AUC_Score不同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆