建设银行安徽分行招聘网站,绿色环保材料网站模板下载,怎么介绍vue做的购物网站项目,邓卅做网站在什么地方机器学习给我们提供了一些强大的工具#xff0c;能从未知数据中抽取出有用的信息。因此#xff0c;能否这些信息以易于人们理解的方式呈现十分重要。如果人们可以直接与算法和数据交互#xff0c;将可以比较轻松的进行解释。其中一个能够同时支持数据呈现和用户交互的方式就…机器学习给我们提供了一些强大的工具能从未知数据中抽取出有用的信息。因此能否这些信息以易于人们理解的方式呈现十分重要。如果人们可以直接与算法和数据交互将可以比较轻松的进行解释。其中一个能够同时支持数据呈现和用户交互的方式就是构建一个图形用户界面GUI。
利用GUI对回归树调优的基本步骤 1、收集数据所提供的文本文件 2、准备数据用Python解析上述文件得到数值型数据 3、分析数据用tkinter构建一个GUI来展示模型和数据 4、训练算法训练一棵回归树和一颗模型树并与数据集一起展示 5、测试算法这里一般不需要测试过程 6、使用算法GUI使得人们可以在预剪枝时测试不同参数的影响还可以帮助我们选择模型的类型。 用tkinter创建GUI
Python有很多GUI框架其中一个易于使用的tkinter是随Python的标准编译版本发布的。tkinter可以在Windows、Mac OS和大多数的Linux平台上使用。
简答的GUI窗口
from tkinter import *rootTk()
myLabelLabel(root,texthello)
myLabel.grid()
root.mainloop() tkinter的GUI由一些小部件组成。所谓小部件指的是文本框、按钮、标签和复选按钮等对象。
下面将所需要的小部件集成在一起构建树管理器。建立一个新的Python文件
from tkinter import *
from numpy import *def loadDataSet(fileName):dataMat[]fropen(fileName)for line in fr.readlines():curLineline.strip().split(\t)fltLinelist(map(float,curLine))#print(list(fltLine))dataMat.append(fltLine)return dataMatdef reDraw(tolS,tolN):pass
def drawNewTree():passrootTk()
Label(root,textPlot Place Holder).grid(row0,columnspan3)
Label(root,texttolN).grid(row1,column0)
tolNentryEntry(root)
tolNentry.grid(row1,column1)
tolNentry.insert(0,10)
Label(root,texttolS).grid(row2,column0)
tolSentryEntry(root)
tolSentry.grid(row2,column1)
tolSentry.insert(0,1.0)
Button(root,textReDraw,commanddrawNewTree).grid(row1,column2,rowspan3)
chkBtnVarIntVar()
chkbtnCheckbutton(root,textmodel Tree,variablechkBtnVar)
chkbtn.grid(row3,column0,columnspan2)
reDraw.rawDatmat(loadDataSet(test/sine.txt))
reDraw.testDatarange(min(reDraw.rawDat[:,0]),max(reDraw.rawDat[:,0]),0.01)
reDraw(1.0,10)
root.mainloop()
上述代码中先是建立了一组tkinter模块并用网格布局管理器安排了它们的位置这里还给出了两个绘制占位符函数。代码中先创建了一个Tk类型的根部件然后插入标签我们可以使用grid()方法设定行和列的位置也可以通过设定columnspan和rowspan的值来告诉布局管理器是否允许一个小部件跨行或跨列。除此以外还有其他设置项可供使用。 现在GUI可以按照要求正常运行下面利用它来绘图。
集成matplotlib和tkinter
matplotlib的构建程序包括一个前端同时创建一个后端用于实现绘图和不同应用之间接口。通过改变后端可以将图像绘制在PNG、PDF、SVG等格式的文件上。
下面将设置后端为TkAgg。TkAgg可以在所选GUI框架上调用Agg把Agg呈现在画布上。我们可以在Tk的GUI上放置一个画布并用grid()来调整布局。
先用画布来替换绘制占位符删掉对应标签并添加以下代码
reDraw.f Figure(figsize(5,4), dpi100) #create canvas
reDraw.canvas FigureCanvasTkAgg(reDraw.f, masterroot)
reDraw.canvas.draw()
reDraw.canvas.get_tk_widget().grid(row0, columnspan3)
下面将树创建函数与画布链接起来
import matplotlib
matplotlib.use(TkAgg)
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figuredef reDraw(tolS,tolN):reDraw.f.clf()reDraw.areDraw.f.add_subplot(111)if chkBtnVar.get():if tolN2:tolN2myTreecreateTree(reDraw.rawDat,modelLeaf,modelErr,ops(tolS,tolN))yHatcreateForeCase(myTree,reDraw.testDat,modelTreeEval)else:myTreecreateTree(reDraw.rawDat,ops(tolS,tolN))yHatcreateForeCase(myTree,reDraw.testDat)reDraw.a.scatter(reDraw.rawDat[:,0].tolist(),reDraw.rawDat[:,1].tolist(),s5)reDraw.a.plot(reDraw.testDat,yHat,linewidth2.0)reDraw.canvas.draw()
def getInputs():try:tolNint(tolNentry.get())except:tolN10print(enter Integer for tolN)tolNentry.delete(0,END)tolNentry.insert(0,10)try:tolSfloat(tolSentry.get())except:tolS1.0print(enter Float for tolS)tolSentry.delete(0,END)tolSentry.insert(0,1.0)return tolN,tolS
def drawNewTree():tolN,tolSgetInputs()reDraw(tolS,tolN)
上述代码中一开始导入matplotlib文件并设定后端为TkAgg。
drawNewTree()函数在ReDraw按钮被点击时被调用它实现了两个功能1、调用getInputs()方法得到输入框的值2、利用该值调用reDraw()方法生成图
getInputs()函数试图理解用户的输入并防止程序崩溃。其中tolS期望的输入是浮点数而tolN期望的输入是整数。为了得到用户输入的文本可以在Entry部件上调用.get()方法。另外这里使用了try和except模式如果Python可以把输入文本解析成整数就继续执行如果不能识别则输出错误信息同时清空输入框并恢复为默认值。
reDraw()函数的主要目的是把树绘制出来。该函数假定输入是合法的它首先要做的是清空之前的图像使得前后两个图像不会重叠。清空时图像的各个子图也都会被清除所以需要重新添加一个新图。接下来函数会检查复选框是否被选中。根据复选框是否被选中确定基于tolS和tolN参数构建模型树还是回归树。当树构建完成之后就对测试集testDat进行预测该测试集与训练集有相同的范围且点的分布均匀。最后真实数据和预测值都会被绘制出来。具体实现是真实值采用scatter()方法绘制而预测值则采用plot()方法绘制这是因为scatter()方法构建的是离散型散点图而plot()方法则构建连续曲线。
实际绘制效果