python sklearn 画出决策树并保存为PDF的实现过程
作者:Dragon水魅 发布时间:2023-08-05 00:23:54
标签:python,sklearn,决策树,PDF
利用sklearn画出决策树并保存为PDF
下载Graphviz
进入官网下载并安装:
https://graphviz.gitlab.io/_pages/Download/Download_windows.html
并将下列路径配置为环境变量:
D:\software\Graphviz\bin
在cmd中测试:
dot -version
python代码
import numpy as np
import pandas as pd
from sklearn import tree
import graphviz
# x,y是sklearn中需要拟合的数据
x = np.array(exam_train)
y = np.array(classes_train)
clf = tree.DecisionTreeClassifier(criterion='entropy', class_weight='balanced', max_depth=25)
clf = clf.fit(x, y)
dot_data = tree.export_graphviz(clf, out_file=None, feature_names=None, filled=True, rounded=True) # 重要参数可定制
graph = graphviz.Source(dot_data)
graph.render(view=True, format="pdf", filename="decisiontree_pdf")
可以生成一张贼帅的决策树PDF:
python sklearn 决策树运用
数据形式(tree.csv)
age look income orderly target
older ugly low yes no
young ugly high no no
young handsome low no no
young handsome high yes yes
young handsome medium yes yes
young handsome medium no no
python源代码:
# -*- coding:utf-8*-
# 将字典 转化为 sklearn 用的数据形式 数据型 矩阵
from sklearn.feature_extraction import DictVectorizer
import csv
from sklearn import preprocessing
from sklearn import tree
allElectronicsData = open('c:/pic/data/tree.csv','rb')
reader = csv.reader(allElectronicsData)
header = reader.next()
# print header
## 数据预处理
featureList = []
labelList = []
for row in reader:
# print row[-1]
labelList.append(row[-1])
# 下面这几步的目的是为了让特征值转化成一种字典的形式,就可以调用sk-learn里面的DictVectorizer,直接将特征的类别值转化成0,1值
rowDict = {}
for i in range(1, len(row) - 1):
rowDict[header[i]] = row[i]
featureList.append(rowDict)
for each in featureList:
print each
# Vectorize features
vec = DictVectorizer()
dummyX = vec.fit_transform(featureList).toarray()
print("dummyX:"+str(dummyX))
print(vec.get_feature_names())
# label的转化,直接用preprocessing的LabelBinarizer方法
lb = preprocessing.LabelBinarizer()
dummyY = lb.fit_transform(labelList)
print("dummyY:"+str(dummyY))
print("labelList:"+str(labelList))
#criterion是选择决策树节点的 标准 ,这里是按照“熵”为标准,即ID3算法;默认标准是gini index,即CART算法。
clf = tree.DecisionTreeClassifier()
clf = clf.fit(dummyX,dummyY)
print("clf:"+str(clf))
# 导入相关函数,可视化决策树
# 导出的结果是一个dot文件(在系统默认路劲),需要安装Graphviz才能将它住哪华为PDF或png格式
# 输出的dot文件可以使用graphvize软件转为PDF,graphvize安装目录中的bin目录放入到环境变量的Path中
# 使用如下命令
#cmd
# dot -Tpdf c:/tree.dot -o c:/tree.pdf
#下载地址:http://www.graphviz.org/Download_windows.php
#生成dot文件
with open("c:/tree.dot",'w') as f:
f = tree.export_graphviz(clf, feature_names= vec.get_feature_names(),out_file= f)
来源:https://blog.csdn.net/qq_43650934/article/details/107286860


猜你喜欢
- 在 Python 中,列表是一种非常常见且强大的数据类型。但有时候,我们需要从一个列表中删除特定元素,尤其是当这个元素出现多次时。本文将介绍
- 由于一些读者对于960 Grid System CSS Framework的原理和使用方法比较感兴趣,暴风彬彬今天将和大家一同分享这篇关于9
- 1. 用 Numpy ndarray 作为数据传入 plyimport numpy as npimport matplotlib as mp
- Jon Wiley, User Experience Designer for Google Apps, outlined some of
- Linux+apache+mysql+python+mod_python+Django说明:系统rhel 5.3,默认安装httpd、mys
- 具体代码如下所示:import sysimport osclass Logger(object): def __init__(s
- 存储过程中的TOP后跟一个变量会如何? Create proc getWorkPlan2 (@intCounter int ,@lngUse
- 前言聚合函数用来对表中的数据进行统计和计算。users表结构如下:什么是聚合函数聚合函数是用来做简单的数据统计的,比如说统计一下 &
- 简介这个模块处理python中常见类型数据和Python bytes之间转换。这可用于处理存储在文件或网络连接中的bytes数据以及其他来源
- 1. 引言最近在将一个算法由matlab转成python,初学python,很多地方还不熟悉,总体感觉就是上手容易,实际上很优雅地用pyth
- 在MySQL中,如何实现Top N及M至N段的记录查询?我们可以利用MySQL中SELECT支持的一个子句——LIMIT——来完成这项功能。
- 本文主要介绍 SQLServerExpress2008不用第三方工具调试T-SQL语句,经过本文的介绍,用SQLSERVER2008 Man
- 安装pyqt5wind@wind-ThinkPad-X250:~/Downloads/PyQt5_gpl-5.12.2$ python3 -
- python 是一门优雅的语言,有些使用方法就像魔法一样。装饰器(decorator)就是一种化腐朽性为神奇的技巧。最近一直都在使用 Tor
- 用ASP代码实现对access数据库的在线压缩处理,注意压缩前请备份数据库。我们知道每个一段时间压缩一下access数据库,可以减少数据库的
- 你一定听说过这句著名的数据科学名言:在数据科学项目中, 80% 的时间是在做数据处理。如果你没有听过,那么请记住:数据清洗是数据科学工作流程
- sys模块提供了与python解释器紧密相关的一些变量和函数。sys部分常用函数函数说明path获取模块文件搜索路径的字符串,或临时指定新搜
- 前言如果你对数据分析有一定的了解,那你一定听说过一些亲民好用的数据分析的工具,如Excel、Tableau、PowerBI等等等等,它们都是
- 近段时间看了一些论坛上面关于分页的ASP程序依然有许多的关注者,但里面只有代码,没有详细的解释,对于初学者来说,这样总是得不到真正的掌握,此
- 如何用ASP发送带附件的邮件?请问如何用CDONTS组件发送带附件的邮件? 见下列代码:<%&nb