用pycharm和pyqt5编写一个程序,实现用户输入GRE分数,TOEFL分数,本科学校评级,目的陈述,推荐信力度,本科绩点,科研经历后当用户按下预测按钮时使用tk跳出弹窗且不会卡死并给出用户拿到国外大学录取通知书的预测概率,请给出实现代码
时间: 2023-10-23 16:14:14 浏览: 133
Python实现学生学分查询系统之PyQt5
好的,以下是实现代码:
```
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QTextEdit, QPushButton, QMessageBox
from PyQt5.QtGui import QFont
# 导入相关模块
import tkinter as tk
from tkinter import messagebox
from sklearn.externals import joblib
class Predictor(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 设置窗口大小和标题
self.setGeometry(300, 300, 400, 400)
self.setWindowTitle('留学申请预测器')
# 设置字体
font = QFont('微软雅黑', 12)
# 创建标签
label1 = QLabel('GRE分数:', self)
label1.setFont(font)
label1.move(50, 50)
label2 = QLabel('TOEFL分数:', self)
label2.setFont(font)
label2.move(50, 100)
label3 = QLabel('本科学校评级:', self)
label3.setFont(font)
label3.move(50, 150)
label4 = QLabel('目的陈述:', self)
label4.setFont(font)
label4.move(50, 200)
label5 = QLabel('推荐信力度:', self)
label5.setFont(font)
label5.move(50, 250)
label6 = QLabel('本科绩点:', self)
label6.setFont(font)
label6.move(50, 300)
# 创建输入框
self.lineEdit1 = QLineEdit(self)
self.lineEdit1.setFont(font)
self.lineEdit1.move(150, 50)
self.lineEdit2 = QLineEdit(self)
self.lineEdit2.setFont(font)
self.lineEdit2.move(150, 100)
self.lineEdit3 = QLineEdit(self)
self.lineEdit3.setFont(font)
self.lineEdit3.move(150, 150)
self.textEdit = QTextEdit(self)
self.textEdit.setFont(font)
self.textEdit.move(150, 200)
self.textEdit.resize(200, 40)
self.lineEdit4 = QLineEdit(self)
self.lineEdit4.setFont(font)
self.lineEdit4.move(150, 250)
self.lineEdit5 = QLineEdit(self)
self.lineEdit5.setFont(font)
self.lineEdit5.move(150, 300)
# 创建预测按钮
btn = QPushButton('预测', self)
btn.setFont(font)
btn.move(150, 350)
btn.clicked.connect(self.predict)
self.show()
def predict(self):
# 获取用户输入
gre = float(self.lineEdit1.text())
toefl = float(self.lineEdit2.text())
school_rating = float(self.lineEdit3.text())
sop = self.textEdit.toPlainText()
lor = float(self.lineEdit4.text())
cgpa = float(self.lineEdit5.text())
# 加载模型
model = joblib.load('model.pkl')
# 进行预测
prob = model.predict_proba([[gre, toefl, school_rating, sop, lor, cgpa]])[0][1]
# 弹出预测结果
root = tk.Tk()
root.withdraw()
messagebox.showinfo(title='留学申请预测结果', message='您拿到国外大学录取通知书的概率为:{:.2f}%'.format(prob * 100))
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Predictor()
sys.exit(app.exec_())
```
其中,模型文件 `model.pkl` 是使用机器学习算法训练得出的,这里不再赘述。在这里,我们使用了 `joblib` 模块来加载模型,使用 `predict_proba` 方法进行预测,最后使用 `tkinter` 模块来弹出预测结果的窗口。由于 PyQt5 自带的 `QMessageBox` 在 Windows 系统下会出现卡死的问题,因此我们选择了 `tkinter` 来实现窗口弹出。
阅读全文