Python graphviz库安装以及中文乱码问题解决

该文介绍了如何在Python中安装Graphviz并添加到环境变量,强调了安装路径应与Python路径一致。接着,文章展示了如何解决中文乱码问题,特别是在使用sklearn的决策树模型进行图形化时。通过示例代码,作者演示了数据预处理、决策树模型训练、测试集预测、性能评估(包括混淆矩阵和AUC值)以及使用Seaborn绘制热力图的过程。
摘要由CSDN通过智能技术生成

安装包地址:

https://graphviz.org/download/

随便选一个:

 

下载之后一路点下一步即可,但是要注意,最开始的时候要问你是否要添加到环境变量之中,

一定要将它加到环境变量中!!

而且下载路径一定要安装到Python的路径当中,如果你确定Python的路径是什么的话,在终端中输入Python进入交互模式,然后敲以下代码:

import sys
sys.path

之后就会出现各Python的路径了,你只要看哪个路径下安装了各种exe文件,比如说pip3,那大概率路径就是目标路径,把文件安装到这个路径即可。

中文乱码问题解决:

from sklearn.tree import export_graphviz 
import graphviz 

dot_data = export_graphviz(clf, 
                        out_file=None,
                        feature_names=features.columns, 
                        class_names=['收入<=50K', '收入>50K']) 

graph = graphviz.Source(dot_data.replace('helvetica','Microsoft YaHei'), encoding='utf-8')  #解决中文乱码
graph.render('决策树可视化')
graph.view()

最后让我们利用一下这个库绘制一下决策树来实现adult数据的预测:

import numpy as np
import pandas as pd
import numpy as np
import pandas as pd
from sklearn.tree import DecisionTreeClassifier, export_graphviz # 导入决策树模型
from sklearn.model_selection import train_test_split  # 导入数据集划分模块
import matplotlib.pyplot as plt
from sklearn.metrics import roc_auc_score
from sklearn.metrics import classification_report
import warnings
warnings.filterwarnings("ignore") 

plt.rc("font",family="SimHei",size="15")  #解决中文乱码问题
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
plt.rcParams['axes.unicode_minus']=False    #解决负数显示不出来的问题

# 数据的读入与处理
tags=['年龄', '工作类别', '序号', '受教育程度', '受教育时间','婚姻状态','职业','社会角色','种族','性别','资本收益','资本支出','每周工作时间','国籍','收入']
data_path ='data2.csv'
df = pd.read_csv(data_path,names=tags)
print('数据预览:\n{}\n'.format(df.head(5)))
heat_feature=df[:].loc[:100,:]   ##这个是后期用来画热力图的,但是要深拷贝!!只取前100行进行分析
m,n=df.shape
print('一共有{}行数据,{}个特征值'.format(m,n))
##数据探索性分析
# 去除字符串数值前的空格
str_cols=[1,3,5,6,7,8,9,13,14]  

for col in str_cols:  
    df.iloc[:,col]=df.iloc[:,col].map(lambda x: x.strip())

# 去除序号, 资本收益, 资本支出,特征属性
df.drop(['序号','资本收益','资本支出'], axis=1, inplace=True)

#对字符串型特征进行编码
features=pd.get_dummies(df.iloc[:,:-1])
m,n=features.shape
print('编码之后的特征值有{}行{}列\n'.format(m,n))

# 构造新标签替换salary
df['收入'] = df['收入'].replace(to_replace=['<=50K', '>50K'], value=[0, 1])  
labels=df.loc[:,'收入']


print('标签:\n{}\n编码之后的特征值:\n{}'.format(labels.head(5),features.head(5)))

# 按4:1的比例划分训练和测试集
X_train,X_test,y_train,y_test=train_test_split(features,labels,test_size=0.25,random_state=1)

# 构建模型
clf = DecisionTreeClassifier(criterion="entropy"   
                              ,splitter="best"  
                              ,max_depth=3   
                              ,random_state=1)

clf.fit(X_train, y_train)

#对于测试集x_test进行预测
X_pre_test=clf.predict(X_test) 

# 其他指标计算

print(classification_report(y_test, X_pre_test))
# 预测测试集概率值
## 得到预测结果
# y_pre = clf.predict_proba(X_test) #这个会返回个标签预测的概率值
y_pre = clf.predict(X_test) 
#计算验证集的auc值,参数为预测值和概率估计


## 计算混淆矩阵
from sklearn.metrics import confusion_matrix
CM=confusion_matrix(y_test, y_pre)
print('混淆矩阵:{}\n'.format(CM))


## 画出热力图
import seaborn as sns
ax = sns.heatmap([[6010,293],[1127,711]],cmap="hot_r")
ax.set_title('热力图')  # 图标题
ax.set_xlabel('真实样本情况')
ax.set_ylabel('决策树模型预测情况')
plt.show()


from sklearn.tree import export_graphviz 
import graphviz 


dot_data = export_graphviz(clf, 
                        out_file=None,
                        feature_names=features.columns, 
                        class_names=['收入<=50K', '收入>50K']) 

graph = graphviz.Source(dot_data.replace('helvetica','Microsoft YaHei'), encoding='utf-8')  #解决中文乱码
graph.render('决策树可视化')
graph.view()

然后关于热力图的个性化,可以参考这个博客:【Python】绘制热力图seaborn.heatmap,cmap设置颜色的参数_cmap颜色_兔子爱读书的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值