树回归--python Tkinter库创建GUI(2)
生活随笔
收集整理的這篇文章主要介紹了
树回归--python Tkinter库创建GUI(2)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
簡單的Tkinter庫創(chuàng)建GUI的例子可參考:
http://blog.csdn.net/lilong117194/article/details/78456376
下面是代碼:
# -*- coding: utf-8 -*- """ Created on Mon Nov 06 10:24:42 2017""" from numpy import * from Tkinter import * import regTrees import matplotlib # 導(dǎo)入matplot文件 matplotlib.use('TkAgg') # 設(shè)置后端TkAgg # 將TkAgg和matplotlib圖鏈接起來 from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg from matplotlib.figure import Figure# 繪制樹 def reDraw(tolS,tolN): reDraw.f.clf() # 清空之前的圖像reDraw.a = reDraw.f.add_subplot(111) # 各個(gè)子圖像也被清除,重新添加新圖if chkBtnVar.get(): # 檢查復(fù)選框是否被選中if tolN < 2: tolN = 2myTree=regTrees.createTree(reDraw.rawDat, regTrees.modelLeaf,regTrees.modelErr, (tolS,tolN))yHat = regTrees.createForeCast(myTree, reDraw.testDat, regTrees.modelTreeEval)else:myTree=regTrees.createTree(reDraw.rawDat, ops=(tolS,tolN))yHat = regTrees.createForeCast(myTree, reDraw.testDat)reDraw.a.scatter(reDraw.rawDat[:,0], reDraw.rawDat[:,1], s=5) # 繪制真實(shí)值reDraw.a.plot(reDraw.testDat, yHat, linewidth=2.0) # 繪制預(yù)測值reDraw.canvas.show()def getInputs(): # 獲取用戶輸入try: tolN = int(tolNentry.get()) # 期望輸入是整數(shù),在Entry部件上調(diào)用.get()方法except: # 清除錯(cuò)誤用默認(rèn)值替換tolN = 10 print "enter Integer for tolN" tolNentry.delete(0, END) # 清除錯(cuò)誤得輸入,并恢復(fù)默認(rèn)值tolNentry.insert(0,'10')try: tolS = float(tolSentry.get()) # 期望輸入是浮點(diǎn)數(shù)except: tolS = 1.0 print "enter Float for tolS"tolSentry.delete(0, END) tolSentry.insert(0,'1.0')return tolN,tolS # 返回用戶的輸入值def drawNewTree(): # 從輸入文本框中獲取參數(shù)tolN,tolS = getInputs() # 該方法得到輸入框的值reDraw(tolS,tolN) # 調(diào)用reDraw繪制圖# 布局GUI代碼 root=Tk()# 創(chuàng)建一個(gè)TK類型的根部件 reDraw.f = Figure(figsize=(5,4), dpi=100) # 創(chuàng)建畫布 reDraw.canvas = FigureCanvasTkAgg(reDraw.f, master=root) reDraw.canvas.show() reDraw.canvas.get_tk_widget().grid(row=0, columnspan=3)Label(root, text="tolN").grid(row=1, column=0) # grid方法設(shè)置行和列的位置 tolNentry = Entry(root) # Entry:允許單行輸入的文本輸入框 tolNentry.grid(row=1, column=1) # 設(shè)置文本框的位置 tolNentry.insert(0,'10') Label(root, text="tolS").grid(row=2, column=0) tolSentry = Entry(root) # 文本輸入框放在root中 tolSentry.grid(row=2, column=1) tolSentry.insert(0,'1.0') # 點(diǎn)擊ReDraw按鈕時(shí),就調(diào)用drawNewTree()函數(shù) Button(root, text="ReDraw", command=drawNewTree).grid(row=1, column=2, rowspan=3)chkBtnVar = IntVar() # 按鈕整數(shù)值,為了讀取Checkbutton的值 chkBtn = Checkbutton(root, text="Model Tree", variable = chkBtnVar) # Checkbutton復(fù)選按鈕 chkBtn.grid(row=3, column=0, columnspan=2)reDraw.rawDat = mat(regTrees.loadDataSet('sine.txt')) reDraw.testDat = arange(min(reDraw.rawDat[:,0]),max(reDraw.rawDat[:,0]),0.01) reDraw(1.0, 10)root.mainloop()運(yùn)行結(jié)果:
分類回歸樹:
模型樹:
構(gòu)建盡可能大的樹:
注意:這里的import regTrees用的是《機(jī)器學(xué)習(xí)實(shí)戰(zhàn)》里的源碼,但是有兩處需要改動(dòng)的地方,具體查看:
http://blog.csdn.net/lilong117194/article/details/78444615
通過GUI可以更友好的調(diào)節(jié)參數(shù)和模型來訓(xùn)練模型和學(xué)習(xí)算法。。
與50位技術(shù)專家面對面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的树回归--python Tkinter库创建GUI(2)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022年北京体育大学招生计划及招生人数
- 下一篇: K-均值聚类算法对未标注数据分组(1)