window系统sklearn决策树graphviz绘图中文乱码解决方法

本文介绍了如何解决使用sklearn决策树和graphviz在window系统上遇到的中文乱码问题。主要思路是修改代码,将字体从helvetica替换为“Microsoft YaHei”,并详细阐述了替换过程。若此方法无效,还提供了修改graphviz字体配置文件的步骤。
摘要由CSDN通过智能技术生成

最近因为工作需要,要用决策树提取一些规则,但是我之前整理的宽表变量名称都是中文,而且目标(标签label)取值也是中文。在jupyter notebook里写了常规代码运行之后,发现中文显示不出来,显示为框框。然后就在网上找一些解决方法,但是不是没说明白,就是很麻烦(要各种编码解码)。所以,自己综合了一些网上的答案,并根据中间结果,摸索出一个简单有效的解决方法,分享一下,如果不对的地方,敬请谅解。

(一)主要思路

下面说一下解决方法,先贴出来运行成功的代码(用的解释器是jupyter notebook):

from sklearn.externals.six import StringIO

import pydotplus

from IPython.display import Image

dot_data = StringIO()

tree.export_graphviz(clf, out_file=dot_data,

feature_names=feature_names,

class_names=class_names,

filled=True, rounded=True,

special_characters=True)

graph = pydotplus.graph_from_dot_data(dot_data.getvalue().replace(‘helvetica’,’“Microsoft YaHei”’))

Image(graph.create_png())

重点在这一句graph = pydotplu

  • 17
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
你可以尝试以下方法解决graphviz决策树中文乱码的问题: 1. 确保你的电脑上已经安装了Graphviz软件,并且将它的可执行文件路径添加到系统环境变量中。 2. 在生成决策树的代码中,设置相关的参数来支持中文字符。例如,在使用sklearn库的DecisionTreeClassifier类进行决策树训练时,可以设置参数`feature_names`和`class_names`为中文字符。 ```python from sklearn import tree # 定义特征名称和类别名称 feature_names = ['特征1', '特征2', ...] class_names = ['类别1', '类别2', ...] # 创建决策树分类器 clf = tree.DecisionTreeClassifier(...) # 训练模型 clf.fit(X, y) # 生成决策树图形 dot_data = tree.export_graphviz(clf, feature_names=feature_names, class_names=class_names, filled=True, rounded=True, special_characters=True) ``` 3. 使用Python的pydotplus库将生成的dot文件转换为图像文件,以便展示决策树。 ```python import pydotplus # 将dot数据加载到图形对象中 graph = pydotplus.graph_from_dot_data(dot_data) # 保存为图像文件(例如PNG格式) graph.write_png('decision_tree.png') ``` 4. 如果仍然遇到中文乱码问题,可以尝试使用字体文件来显示中文字符。首先,下载一个包含中文字体的TrueType字体文件(例如simsun.ttf),然后在代码中指定字体文件路径。 ```python # 设置字体文件路径 font_path = 'path_to_fonts/simsun.ttf' # 创建决策树图形时,指定字体参数 dot_data = tree.export_graphviz(clf, feature_names=feature_names, class_names=class_names, filled=True, rounded=True, special_characters=True, font_name=font_path) ``` 尝试上述方法,应该能够解决graphviz决策树中文乱码的问题。如果仍然存在困扰,请提供更多详细信息以便我能够更好地帮助你。
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值