什么是来自Python LightGBM的leaf_values?

时间:2018-05-05 11:15:59

标签: python lightgbm

我使用的是LightGBM套餐。

我使用" create_tree_digraph"成功创建了一个新树。但是我在理解结果时遇到了一些麻烦。

有" leaf_value"在叶节点中。我不知道这意味着什么。拜托,有人帮我理解这一点。谢谢。 :)

我在这里使用了这个示例代码:https://www.analyticsvidhya.com/blog/2017/06/which-algorithm-takes-the-crown-light-gbm-vs-xgboost/

#importing standard libraries 
import numpy as np 
import pandas as pd 
from pandas import Series, DataFrame 
import graphviz

import lightgbm as lgb 

#loading our training dataset 'adult.csv' with name 'data' using pandas 
data=pd.read_csv('./adult.csv',header=None) 

#Assigning names to the columns 
data.columns=['age','workclass','fnlwgt','education','education-num','marital_Status','occupation','relationship','race','sex','capital_gain','capital_loss','hours_per_week','native_country','Income'] 

# Label Encoding our target variable 
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
l=LabelEncoder()
l.fit(data.Income) 

data.Income=Series(l.transform(data.Income))  #label encoding our target variable  

#One Hot Encoding of the Categorical features 
one_hot_workclass=pd.get_dummies(data.workclass) 
one_hot_education=pd.get_dummies(data.education) 

#removing categorical features 
data.drop(['workclass','education','marital_Status','occupation','relationship','race','sex','native_country'],axis=1,inplace=True)  

#Merging one hot encoded features with our dataset 'data' 
data=pd.concat([data,one_hot_workclass,one_hot_education],axis=1) 

#Here our target variable is 'Income' with values as 1 or 0.  
#Separating our data into features dataset x and our target dataset y 
x=data.drop('Income',axis=1) 
y=data.Income 

#Imputing missing values in our target variable 
y.fillna(y.mode()[0],inplace=True) 

#Now splitting our dataset into test and train 
from sklearn.model_selection import train_test_split 
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=.3)

train_data=lgb.Dataset(x_train,label=y_train)

#setting parameters for lightgbm
param = {'num_leaves':150, 'objective':'binary','max_depth':3,'learning_rate':.05,'max_bin':200}
param['metric'] = ['auc', 'binary_logloss']

#training our model using light gbm
num_round=50
lgbm=lgb.train(param,train_data,num_round)

graph = lgb.create_tree_digraph(lgbm)
graph.render(view=True)

然后我申请了' create_tree_digraph'功能

Pics

1 个答案:

答案 0 :(得分:0)

这些是应用sigmoid函数之前的原始预测概率。但是,有一点需要注意的是,您的图像仅显示整个模型中的一棵树,因此它与实际结果不同(除非您的模型只是这一棵树)。

这个Image显示了在创建图之前将sigmoid应用于叶值的情况。