何時會有predict(),何時又有predict_proba()


諾,你經常見的說兩者的區別,但是沒給答案,抱歉我也沒確切答案只有實踐;

https://www.cnblogs.com/mrtop/p/10309083.html

不糾結了先給我確定的答案,理解比較片面;

1、首先要分清使用的是sklearn接口形式還是原生形式;

以lightGBM舉例:摘於以下內容

https://www.jianshu.com/p/623ef31f186e

鏈接內sklearn接口形式的代碼如下:

我們可以看出他確實是使用的sklearn接口形式,卻還是沒有predict_proba()的選擇,方案如下;

 

import lightgbm as lgb
import pandas as pd
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import GridSearchCV
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.datasets import  make_classification
# 加載數據
print('Load data...')

iris = load_iris()
data=iris.data
target = iris.target
X_train,X_test,y_train,y_test =train_test_split(data,target,test_size=0.2)

print('Start training...')
# 創建模型,訓練模型
gbm = lgb.LGBMRegressor(objective='regression',num_leaves=31,learning_rate=0.05,n_estimators=20)
gbm.fit(X_train, y_train,eval_set=[(X_test, y_test)],eval_metric='l1',early_stopping_rounds=5)

print('Start predicting...')
# 測試集預測
y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration_)
# 自己試predict_proba()

 

2、我們這時候有兩個辦法可以出現predict_proba(),不要問我原因問就是原因1哈哈哈哈

如果你堅持還用回歸的話,我是選擇這樣子,就可以調用出predict_proba()

# 創建模型,訓練模型
gbm = LGBMRegressor(objective='regression',num_leaves=31,learning_rate=0.05,n_estimators=20)
gbm.fit(X_train, y_train,eval_set=[(X_test, y_test)],eval_metric='l1',early_stopping_rounds=5)

如果你發現用分類也不錯的話,我是選擇這樣子,就可以調用出predict_proba()

# 創建模型,訓練模型
gbm = lgb.LGBMClassifier(objective='multiclass',num_leaves=31,learning_rate=0.05,n_estimators=20)
gbm.fit(X_train, y_train,eval_set=[(X_test, y_test)],early_stopping_rounds=5)

哎,實踐出來的,就是不明白原因,如果你也有此疑惑,望評論區給答案!!!

就此謝過!

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM