如何指定决策树的 graphviz 表示的 Figsize?

2023-11-27

我有一个GraphViz在 iris 数据集上训练的决策树的表示。

import graphviz 

dot_data = tree.export_graphviz(clf, out_file=None, 
                     feature_names=iris.feature_names,  
                     class_names=iris.target_names,  
                     filled=True, rounded=True,  
                     special_characters=True)

graph = graphviz.Source(dot_data)
graph

我正在使用上面的代码来生成GraphViz图,但它创建了一个大图。

我想手动控制figzise该图的。我怎样才能做到这一点?


在最初编写自己的函数来修改 DOT 源代码字符串以添加大小属性后,我偶然发现了这一部分pydotplus.graphviz.Graph文档:

Graphviz 点语言中定义的所有属性都应该 得到支持。

可以通过动态生成的方法设置属性:

 set_[attribute name], i.e. set_size, set_fontname

您可以在下面看到使用此功能的示例。请注意调用函数时的语法,因为 DOT 源代码需要将宽度和高度用双引号引起来。感叹号意味着它将强制调整图像大小,直到其中一个尺寸与指定尺寸之一匹配,只有当指定的尺寸大于图形的原始尺寸时,这似乎才重要。

import pydotplus
from sklearn.datasets import load_breast_cancer
from sklearn.tree import DecisionTreeClassifier, export_graphviz

# Load in the dataset from sklearn
dataset = load_breast_cancer()
X = dataset.data
y = dataset.target
col_names = dataset.feature_names

# Create and fit the decision tree
clf_dt = DecisionTreeClassifier(criterion = 'gini', max_depth = 3)
clf_dt.fit(X_train, y_train)

# Export resulting tree to DOT source code string
dot_data = export_graphviz(clf_dt,
                                feature_names=col_names,
                                out_file=None,
                                filled=True,
                                rounded=True)

pydot_graph = pydotplus.graph_from_dot_data(dot_data)
pydot_graph.write_png('original_tree.png')
pydot_graph.set_size('"5,5!"')
pydot_graph.write_png('resized_tree.png')

单击图片以了解大小,因为它似乎无法在浏览器中正确显示。

original_tree.png: original tree

resized_tree.png:
resized tree

另请注意pydotplus.graphviz.Graph对象有一个to_string()方法返回树的 DOT 源代码字符串,也可以与graphviz.Source你的问题中的对象:

import graphviz
gvz_graph = graphviz.Source(pydot_graph.to_string())
gvz_graph
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何指定决策树的 graphviz 表示的 Figsize? 的相关文章

随机推荐

  • 内部错误(javaClasses.cpp:129)

    我正在尝试在 Eclipse 上使用 JUnit 4 和 Robolectric 运行测试 但我一直收到此错误 Invalid layout of java lang String at value A fatal error has be
  • 如果矩阵中单个作业失败,则将 GitHub 操作工作流程标记为失败

    运行 GitHub Actions 矩阵工作流程时 我们如何允许作业失败 继续运行所有其他作业 并将工作流程本身标记为失败 在此图中 您可以看到即使作业失败后工作流程也会通过 在这种情况下 我们需要将工作流程标记为失败 这是我的工作流程 y
  • 多个 mongoose 预保存中间件

    我想对单个模式使用多个预保存猫鼬中间件 这可能吗 Example var schema new Schema schema pre save function next do stuff next schema pre save funct
  • 具有 2 个主键字段的 JPA 表

    我有一个只包含 2 个字段的表 该表有一个由这两个字段组成的复合PK 当使用 Netbeans 从数据库创建实体 bean 时 实体 bean 不会像其他具有 2 个以上字段的表那样自动创建 所以我想我需要自己创建实体bean 创建此实体
  • 直接调用全局安装的Node.js模块

    假设我想为 Node js 编写一个要全局安装的模块 我不想编写任何 C 或其他东西 而是编写普通的 Node js 代码 基本上 这很容易 只需编写模块 然后使用安装即可npm install g 现在 大多数全局安装的模块都提供了直接调
  • elm 生成随机数

    我想在 elm 中的两个值之间生成一个随机 int 像这样的东西 nb random 0 10 我已阅读该文档和多篇文章 最好的答案来自这个 stackoverflowpost gen Random int 0 10 seed0 Rando
  • iOs 中 HTML5 音频元素的持续时间值存在问题

    我正在为 iOs 设备开发一个网络应用程序 但 html5 音频标签有问题 我设计了一个自定义音频播放器 并使用 JavaScript 函数控制歌曲 在 safari 桌面版上 该应用程序运行良好 但在 safari 移动版上 它无法识别音
  • 如何更改JFreeChart饼图颜色?

    如何自定义 JFreeChart 图形的颜色 让我们看看我的java代码 private StreamedContent chartImage public void init JFreeChart jfreechart ChartFact
  • Swift,与方法名相同的变量

    我有一个 var formVC UIViewController 我还试图有一个名为 func formVC gt UIViewController 我知道它在 OBJC 中有效 但我没有看到在 Swift 中做到这一点的方法 有没有办法解
  • ActionBarActivity 和 Fragment Activity 的区别

    我是 Android 菜鸟 我刚开始使用ActionBarActivity over FragmentActivity 他们之间有什么区别吗 FragmentActivity是基于支持的片段的基类 所以你将使用Fragment来自 API
  • 在 vue 3 中导入 bootstrapVue

    您好 我尝试在我的 vue 3 应用程序中使用 bootstrapVue 和 typescript 这里是我的 main ts import createApp from vue import App from App vue import
  • R 与其他非 Java 语言的接口/将 R 编译为可执行文件

    我开发了一个与数据库一起使用的 R 脚本 进行一系列处理并输出图形和表格 我可以将该数据输出为逗号分隔值和图片 以便稍后将它们导入到我的软件中 这没有问题 问题是如何分发我的应用程序而无需在客户端上完整安装 R 我见过 RJava 之类的东
  • Xcode 针对不同目标使用不同资源

    我正在开发一个 iPhone 应用程序 该应用程序将有完整版和精简版 为了从相同的源代码和 Xcode 项目中获取这两个包 我向 Xcode 项目添加了另一个目标 现在 我想让 Lite 目标仅将资源文件的子集复制到捆绑包中 但是 Xcod
  • 如何提取图像中的白色区域

    我有一个像这样的示例图像 我正在寻找一种方法来消除图像中的噪声 这样我最终会得到一个在白色背景上只有黑色文本的图像 以便我可以将其发送到超立方体 我尝试过变形 kernel np ones 4 4 np uint8 opening cv2
  • C# 获取列表中的非重复项[重复]

    这个问题在这里已经有答案了 有了这样的列表 int numbers 1 2 2 3 3 4 4 5 我可以使用 Distinct 函数删除重复项 因此列表将显示 1 2 3 4 5 然而 我想要相反的 我希望它删除所有重复的数字 留下唯一的
  • 获取标题不完全已知的窗口的句柄。 (C#)

    标题是部分静态的 带有可变后缀 例如 窗口标题 user id 在不知道确切标题的情况下如何获取句柄 查看所有进程并检查主窗口标题 您可以使用正则表达式 或者StartsWith etc foreach Process proc in Pr
  • Linq If 语句

    我如何在 linq toEntity 中写这样的东西 sb Append WHERE question question isdeleted 0 if catid 0 sb AppendFormat AND CatID IN 0 catsS
  • 将 EFS 卷附加到 Kubernetes Pod 时遇到问题

    我在 AWS EKS 上的 kubernetes 集群的帮助下运行我的 docker 容器 我的两个 docker 容器正在使用共享卷 并且这两个容器都在两个不同的 pod 内运行 所以我想要一个可供 aws 上的两个 Pod 使用的通用卷
  • 如何将 BufferedImage 保存为低于特定大小

    使用 java 8 给定图像用户需要能够指定最小 最大图像大小 以像素为单位 以及保存图像的最大大小 以 kbs 为单位 图像将保存为 jpg 所以我首先通过调整缓冲图像的大小来工作 public static BufferedImage
  • 如何指定决策树的 graphviz 表示的 Figsize?

    我有一个GraphViz在 iris 数据集上训练的决策树的表示 import graphviz dot data tree export graphviz clf out file None feature names iris feat