诺,你经常见的说两者的区别,但是没给答案,抱歉我也没确切答案只有实践;
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)
哎,实践出来的,就是不明白原因,如果你也有此疑惑,望评论区给答案!!!
就此谢过!