python sklearn 画出决策树并保存为PDF的实现过程

作者:Dragon水魅 时间:2023-08-05 00:23:54 

利用sklearn画出决策树并保存为PDF

下载Graphviz

进入官网下载并安装:

https://graphviz.gitlab.io/_pages/Download/Download_windows.html

并将下列路径配置为环境变量:

  • D:\software\Graphviz\bin

在cmd中测试:

  • dot -version

python sklearn 画出决策树并保存为PDF的实现过程

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 画出决策树并保存为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 sklearn 画出决策树并保存为PDF的实现过程

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,sklearn,决策树,PDF
0
投稿

猜你喜欢

  • Python实现的简单线性回归算法实例分析

    2021-06-05 17:16:12
  • 解决python 文本过滤和清理问题

    2023-08-31 08:18:38
  • MySQL启动连接的命令以及与PHP程序连接的基本语法

    2023-11-14 22:27:26
  • Python中的面向对象编程详解(上)

    2021-10-12 14:33:45
  • Python K-means实现简单图像聚类的示例代码

    2023-06-30 10:40:58
  • 用python实现操纵mysql数据库插入

    2024-01-16 01:15:41
  • 总结python多进程multiprocessing的相关知识

    2022-12-04 00:17:57
  • python调用jenkinsAPI构建jenkins,并传递参数的示例

    2023-08-09 13:13:55
  • python opencv之SURF算法示例

    2021-03-06 13:10:28
  • python之列表推导式的用法

    2021-04-22 18:54:59
  • Golang单元测试与断言编写流程详解

    2024-05-05 09:28:13
  • PHP遍历目录实现方法介绍

    2023-05-25 06:31:41
  • python实现socket+threading处理多连接的方法

    2021-12-16 17:54:32
  • vue调用本地摄像头实现拍照功能

    2024-04-28 09:21:46
  • Python prettytable模块应用详解

    2022-05-11 13:10:15
  • Python matplotlib可视化绘图详解

    2021-11-11 12:03:26
  • 如何获得ADO的连接信息?

    2009-11-23 20:33:00
  • sql server 2008数据库连接字符串大全

    2024-01-18 13:42:09
  • 在python tkinter中Canvas实现进度条显示的方法

    2023-06-04 18:12:56
  • OpenCV立体图像深度图Depth Map基础

    2021-09-23 22:12:59
  • asp之家 网络编程 m.aspxhome.com