决策树可视化 xgb、lgb可视化

目录

导包

决策树可视化方法

 xgb、lgb建模

 xgb可视化

 lgb可视化


导包

from sklearn.datasets import load_iris
from sklearn.tree import plot_tree
from sklearn import tree
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np

决策树可视化方法

1、不需要安装graphviz软件包

        鉴于实际建模应用往往是xgb、lgb等,决策树更多用于分析,所以此处将决策树建模与可视化封装在一起,方便实用

def DecisionTree_plot(x,y,feature_names=None,target_names=None,max_depth=3,min_samples_leaf=10):
    clf = DecisionTreeClassifier(max_depth=max_depth,min_samples_leaf=min_samples_leaf).fit(x,y)
    plt.figure(dpi=100,figsize=(8,8))
    plot_tree(clf, filled=True,rounded=True,feature_names=feature_names,  
                         class_names=target_names)
    plt.show()
iris = load_iris()
DecisionTree_plot(iris.data,iris.target,iris.feature_names,iris.target_names)

         可以看到,使用原生方法可视化的结果还是比较简陋的

2、 决策树可视化方法2,需要安装graphviz软件包

import graphviz 
def DecisionTree_plot2(x,y,feature_names=None,target_names=None,max_depth=3,min_samples_leaf=10):
    clf = DecisionTreeClassifier(max_depth=max_depth,min_samples_leaf=min_samples_leaf).fit(x,y)
    dot_data = tree.export_graphviz(clf,
                         feature_names=iris.feature_names,  
                         class_names=iris.target_names,  
                         filled=True, rounded=True,  
                         special_characters=True)  
    graph = graphviz.Source(dot_data)  
    return graph 
DecisionTree_plot2(iris.data,iris.target,iris.feature_names,iris.target_names)

 

 xgb、lgb建模

import xgboost as xgb
import pandas as pd
import numpy as np

df=pd.read_excel('data.xlsx')
xgb_df = xgb.DMatrix(df.drop('y',axis=1), label =df.y)
lgb_df =lgb.Dataset(df.drop('y',axis=1), label =df.y)

param = {'max_depth':3, 'eta':0.2, 'min_child_weight':50}
xgb_model = xgb.train(param, dtrain)
lgb_model = lgb.train(param, dtrain)

 xgb可视化

        其中num_trees为子树的索引

xgb.to_graphviz(xgb_model, num_trees=0, rankdir='UT')

 lgb可视化

lgb.create_tree_digraph(model, tree_index=0,encoding='UTF-8')

 

 

关注公众号Python风控模型与数据分析,更多知识、代码分享

往期精彩文章

Catboost原理详解

Catboost参数详解及实战

模型可解释性-shap value原理及实战

pyecarts动态交互图表-可视化大屏

pyecharts动态图表嵌入ppt

xgboost原理(无推导就轻易理解)

lgb实战风控算法赛

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
XGBoost(eXtreme Gradient Boosting)是一个高效的机器学习算法,广泛用于数据挖掘和科学竞赛中的预测建模任务。它可以使用Python中的xgboost库来实现,并支持树的可视化,这对于理解模型决策过程非常有帮助。下面是一个简单的Python代码示例,展示如何训练一个XGBoost模型并可视化其中的一棵树。 首先,确保你已经安装了xgboost库和graphviz软件包。如果没有安装,可以使用pip进行安装: ``` pip install xgboost pip install graphviz ``` 接下来,你可能还需要安装Graphviz的可执行文件,这通常需要从Graphviz的官方网站下载并安装。 然后,你可以使用以下代码来训练模型并可视化决策树: ```python import xgboost as xgb from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split import graphviz # 加载数据集并分割训练集和测试集 data = load_breast_cancer() X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42) # 训练XGBoost模型 xgb_model = xgb.XGBClassifier() xgb_model.fit(X_train, y_train) # 选择模型中的一个树 xgb_model.get_booster().get_score(importance_type='weight') # 选择第0棵树 tree_index = 0 # 可视化树的结构 xgb.to_graphviz(xgb_model, num_trees=tree_index) ``` 在执行上述代码之前,请确保`graphviz`模块已经正确安装并配置了环境变量,以便它可以找到Graphviz的可执行文件。 请注意,这里的`num_trees`参数可以用来选择你想可视化的特定树。如果你想要可视化每棵树,你可能需要将上述代码放入循环中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值