XGBoost 基于graphviz的模型可视化_可显示中文极简源码

文章目录

  • 前言
  • 一、源码及解决方案


前言

之前试了试XGBoost的可视化,结果中文直接乱码,在网上查了资料,算是解决了。

一、源码及解决方案

import xgboost as xgb
from xgboost import plot_tree
import pandas as pd
import os

traindata = pd.read_csv('data/alldata.csv')
trainlabel = traindata.pop('价格')

Model = xgb.XGBRegressor(max_depth=4, learning_rate=0.05, n_estimators=100)
Model.fit(traindata, trainlabel)
digraph = xgb.to_graphviz(Model, num_trees=1)
digraph.format = 'png'
digraph.view('C:/MyProject/2021Match/2021Mathorcup/png/xgb_view')
print('可视化图片写入成功!')

上面是标准的可视化源码,通过csv格式数据对XGBoost模型进行训练,之后调用graphviz进行可视化。
注意下面是文件储存的地方,会有两个文件,一个是文本格式,一个是dot命令生成的可视化png。

digraph.view('C:/MyProject/2021Match/2021Mathorcup/png/xgb_view')

打开可视化png会发现中文无法显示:
XGBoost 基于graphviz的模型可视化_可显示中文极简源码_第1张图片
我们需要到文件存储的地方找到生成图片的文本文件:
XGBoost 基于graphviz的模型可视化_可显示中文极简源码_第2张图片
并在第二行加入:

node [fontname="FangSong" shape=plaintext]

XGBoost 基于graphviz的模型可视化_可显示中文极简源码_第3张图片
打开cmd,进入当前储存文本文件的目录,输入命令调用dot重新生成可视化png文件:

dot -Tjpg  xgb_view -o xgb_view.jpg

成功显示:
XGBoost 基于graphviz的模型可视化_可显示中文极简源码_第4张图片

你可能感兴趣的:(Feature,Engineering,python,机器学习,开发语言)