from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QAction, QApplication, QWidget,QGridLayout) #from board import Board #from clearButton import ClearButton #from trainWidget import TrainWidget #from testWidget import TestWidget from ubuwidgets import (Button, ComboWidget, Board) # Import datasets, classifiers and performance metrics from sklearn import svm, from sklearn.externals import joblib class MainWindow(QWidget): def __init__(self,parent=None): super(MainWindow, self).__init__(parent) self.scribbleArea = Board() self.clearButton = Button(self, "Clear Image", self.on_clear) self.trainButton = Button(self, "Train", self.on_train) self.saveCombo = ComboWidget(self, "Label: ", "Save", self.on_save) self.testCombo = ComboWidget(self, "Result: ", "Test", self.on_test, True) grid = QGridLayout() grid.addWidget(self.scribbleArea,1,0) grid.addWidget(self.clearButton,2,0) grid.addWidget(self.trainButton,3,0) grid.addWidget(self.saveCombo,4,0) grid.addWidget(self.testCombo,5,0) self.setLayout(grid) self.setWindowTitle("number ubu") self.resize(512, 700) def on_clear(self): self.scribbleArea.clearImage() def on_train(self): #เตรียมข้อมูล digit_data, digit_label = self.scribbleArea.data_prep_train() print('training..') # สร้าง classifier: a support vector classifier classifier = svm.SVC(gamma=0.001) # สอนให้คอมพิวเตอร์จดจำ classifier.fit(digit_data, digit_label) #เซฟ model joblib.dump(classifier, 'svmModel.pkl') #วัดประสิทธิภาพของโมเดล self.scribbleArea.evaluation(digit_data, digit_label, classifier) def on_test(self): print("testing...") #โหลดโมเดล clf = joblib.load('svmModel.pkl') #เตรียมข้อมูลสำหรับทดสอบ test_data = self.scribbleArea.data_prep_test() #ทำการทำนาย predicted = clf.predict(test_data) #แสดงผลการทำนาย result = "ผลการทำนาย คือ "+predicted[0] self.testCombo.set_text(result) print("ผลการทำนาย คือ", predicted) def on_save(self): print('on_save') self.scribbleArea.saveImage(self.saveCombo.text()) self.scribbleArea.clearImage() if __name__ == '__main__': import sys app = QApplication(sys.argv) window = MainWindow() window.show() sys.exit(app.exec_())