諾,你經常見的說兩者的區別,但是沒給答案,抱歉我也沒確切答案只有實踐;
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)
哎,實踐出來的,就是不明白原因,如果你也有此疑惑,望評論區給答案!!!
就此謝過!