诺,你经常见的说两者的区别,但是没给答案,抱歉我也没确切答案只有实践;

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)

哎,实践出来的,就是不明白原因,如果你也有此疑惑,望评论区给答案!!!

就此谢过!

 

  

 

posted on 2020-07-28 14:44  whiteooo  阅读(2000)  评论(0编辑  收藏  举报