9.7 使用 Python 的 Tkinter 库创建 GUI
机器学习给我们提供了一些强大的工具,能从未知数据中抽取出有用的信息
^
因 此 ,能否将 这些信息以易于人们理解的方式呈现十分重要。再 者 ,假如人们可以直接与算法和数据交互,将 可以比较轻松地进行解释。如果仅仅只是绘制出一幅静态图像,或者只是在?>^(^命令行中输出 一 些 数 字 ,那么对结果做分析和交流将非常困难。如果能让用户不需要任何指令就可以按照他们 自己的方式来分析数据,就不需要对数据做出过多解释。其中一个能同时支持数据呈现和用户交 亙的方式就是构建一个图形用户界面(0
口1,Graphical User Interface) ,
如图9-7
所 亦 。图
9 - 7
默认的化6
纽父?10
化图形用户界面,该界面同时显示了输人数据和一个回归树 模型,其中的参数七。1
讨=10
,tolS=1.0
9.7
使用Python
的Tkinter
库创建GUI 177
示例:利用
㊀
⑶对回归树调优⑴ 收 集 数 据 :所提供的文本文件。
(2)准备数据:用?5他0^解析上述文件,得到数值型数据。
(3)分析数据:用丁^ 扯61构建一个0 研来展示模型和数据。
(4)训练算法:训练一棵回归树和一棵模型树,并与数据集一起展示出来。
(5) 測试算法:这里不需要测试过程。
(6) 使用算法:0111使得人们可以在预剪枝时测试不同参数的影响,还可以帮助我们选择 模型的类型。
接下 来将介绍如何用?
7 & ^
来 构 建0
饥 。首先介绍如何利用一个现有的模块丁^
时^来构建G U I ,
之后介绍如何在了匕^ ^
和绘图库之间交互,最后通过创建01_11
使人们能够自己探索模型树 和回归树的奥秘。9 . 7 . 1 f f i T k i n t e d ^ G U I
?
丫也^
有很多<^1
框 架 ,其中一个易于使用的丁^
恤 〖,是随? > ^ ^
的标准编译版本发布的。丁让丨她河以在%
1^(^8、Mac 0 8
和大多数的1^1«
平台上使用。下面先从最简单的只
6丨
10界
0过故仔开始。在
?7±00提本符下输人以下命令:
>>> from Tk in ter import *
>>> root = Tk()
这时会出现一个小窗口或者一些错误提示。要想在窗口上显示一些文字,可以输人如下命令:
>>> myLabel = L a b e l(r o o t , tex t= "H ello W orld”)
>>> myLabel. g r i d ()
输人 完毕后,文本框里就会显示出你刚才输人的文字。非常简单吧!
为了程序的完整,应该再输人以下命令:
'
>>> r o o t . m a i n l o o p ()
这条命令将启动事件循环,使该窗口在众多事件中可以响应鼠标点击、按键和重绘等动作。
丁让丨
! ^
的(5
研 由 一 些 小 部 件 (Widget)
组成。所 谓 小部件,指 的 是 文 本 框 (TextBox
)、按钮(Button)
、标 签 (Label)
和 复 选 按 钮 (CheckButton)
等对象。在 刚 才的 抱110
评0
仳 例 子 中 ,标 签0 ^ 3
化1
就是其中唯一的小部件。当调用卿[31^1
的4 & £1(>
方 法 时 ,就等于把!(^
处6 1
的位 置 告 诉 了 布 局 管 理 器 (0 6 ( ^
过^
厘&1«^
过 )。丁^
汾 红 中 提 供 了 几 种 不 同 的 布 局 管 理 器 ,其中 的.g r i d ()
方法会把小部件安排在一个二维的表格中。用户可以设定每个小部件所在的行列位 置 。这里没有做任何设定,《^ ^ ^ 1
会默认显示在0
行0
列 。下面将所需的小部件集成在一起构建树管理器。建立一个新的
?
沖(
《文件肽 沾\?1
肌 扔 ,并 在其中加人程序清单9-6
的代码。178
第9
章 树 回 归Label(root, text="Plot Place H o l d e r " ) .grid(row=0, columnspan=3) L a b e l ( r o o t , t e x t = " t o l N " ) . g r i d ( r o w = l , colu m n = 0 )
9.7
使用Python
的Tkinter
库创建GUI 179
保存程序清单9-6
的代码并执行,
可以看到与图9-8
类似的图。^ g ^ ^ ^ ^ g ^ ^ j ^ g
Plot Place Holder to lN |lT
tolS |l.0 ReDraw
「 ModelTree
图9 - 8使 用 多 个 丁 ^ 访 部 件 创 建 的 树 管 理 器
现在
001
可以按照要求正常运行了,下面利用它来绘图。接下来的小节中将在同一幅图上绘 出原始数据集及其对应的树回归预测值。9.7.2
集 成
Matplotlib和
Tkinter本书已经用^ ^中10 11化绘制过很多图像,能否将这些图像直接放在0 ^ 上呢?下面将首先介绍
“后端”的概念,然后通过修改M a tp lo tlib后 端 (仅在我们的0切 上 )达到在1 ^他 他0以上绘图的 目的。
^ ^