Mac下安装graphviz以及XGBoost可视化决策树

最近做项目又需要用XGBoost画出决策树来解释,之前用花了大力气装了graphviz画决策树,后来重新安装了Anaconda后环境就没了,也忘了当时踩过的坑,在网上找到的都是千篇一律但是装不好的博客,所以又踩了一次坑,install uninstall了好几次,写一篇博客以免以后自己又忘了。。。

1、Mac下安装graphviz

我先在Anaconda的环境中尝试安装,apply了以下两个包,可是不能用,后面想要remove也操作不了,后来就没管了,继续下面的安装步骤了(不知道这一步有没有用)
在这里插入图片描述

1、打开终端,查看是否安装了brew,若出现下面则说明brew是OK的,安装了之后才进行下一步
在这里插入图片描述
2、终端中输入brew install graphviz,在电脑上下载和安装graphviz,若长时间停留在Updating Homebrew...可以用control+C跳过更新,然后出现很多downloading,需要等一段时间
在这里插入图片描述

3、进入需要安装的环境下,进入环境为activate + 环境名,退出环境为conda deactive,然后用pip3对Python安装graphviz,输入pip3 install graphviz
在这里插入图片描述
然后就可以在Python的IDE中使用了。下面是XGBoost可视化决策树。

2、XGBoost可视化决策树

1、xgb是xgboost的分类器或者regressor,对训练集进行拟合后得到

import xgboost
from xgboost import XGBRegressor
from sklearn.model_selection import RandomizedSearchCV
import scipy.stats as st

# 随机搜索调参
# 基本模型
xgb = XGBRegressor(booster = 'gbtree',
                   objective = 'reg:squarederror',
                   eval_metric = 'rmse',
                   n_jobs = -1,
                   random_state = 1)

# 给定参数搜索范围,使用分布可以以分布抽样,比较好,若列出list是不放回抽样
param_dist = {'n_estimators': st.randint(100, 300),
              'max_depth': st.randint(3, 9),
              'subsample': st.uniform(loc=0.6, scale=0.4),
              'colsample_bytree': st.uniform(loc=0.6, scale=0.4),
              'reg_alpha': st.reciprocal(a=0.1, b=3),
              'reg_lambda': st.reciprocal(a=0.1, b=3),
              'gamma': st.uniform(loc=0.1, scale=0.4),
              'learning_rate': st.reciprocal(a=0.01, b=0.1)}

# 100次5折随机搜索选取超参数
random_search = RandomizedSearchCV(xgb, param_dist, n_iter=100, cv=5, 
                                   random_state=1, n_jobs=-1) 
random_search.fit(X_train, y_train)
print("最优参数为: ", random_search.best_params_, '\n')

# 搜索出来的参数
xgb = XGBRegressor(booster = 'gbtree',
                   objective = 'reg:squarederror',
                   eval_metric = 'rmse',
                   n_estimators = 105,
                   max_depth = 3,
                   subsample = 0.9929669797171772,
                   colsample_bytree = 0.7958798412068397,
                   reg_alpha = 1.6214144356327336,
                   reg_lambda = 0.2875908279269091,
                   gamma = 0.45574990157070927,
                   learning_rate = 0.07490490662679436,
                   n_jobs = -1,
                   random_state = 1                
                   )
xgb.fit(X_train, y_train) # 训练模型
xgboost.plot_tree(xgb, num_trees=3) # 画出第3颗决策树

下面是xgboost的一颗决策树,open是一个特征
在这里插入图片描述
这个图显示的特别不清楚,若使用xgboost.to_graphviz(xgb, num_trees=3)在控制台中的图就会清楚很多。
在这里插入图片描述

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值