用pycharm和pyqt5编写一个程序,实现用户输入GRE分数,TOEFL分数,本科学校评级,目的陈述,推荐信力度,本科绩点,科研经历后使用tk跳出弹窗并给出用户拿到国外大学录取通知书的预测概率,请给出实现代码
时间: 2023-10-22 08:09:25 浏览: 149
Python实现学生学分查询系统之PyQt5
以下是一个使用 PyCharm 和 PyQt5 编写的 GUI 程序,可以实现用户输入一些信息,并使用 tk 弹窗来显示用户拿到国外大学录取通知书的预测概率。在本示例中,我们使用了线性回归模型来进行预测,具体实现方法可以参考 sklearn 的官方文档。
请注意,本示例仅供参考,实际的预测效果可能会受到多种因素的影响。同时,由于 PyQt5 和 tk 都是 Python 的 GUI 库,所以程序中使用了两个不同的 GUI 库来实现不同的功能。
```python
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QTextEdit, QPushButton
from sklearn.linear_model import LinearRegression
import tkinter as tk
from tkinter import messagebox
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 创建标签和输入框
gre_label = QLabel("GRE分数:", self)
gre_label.move(20, 20)
self.gre_edit = QLineEdit(self)
self.gre_edit.move(120, 20)
toefl_label = QLabel("TOEFL分数:", self)
toefl_label.move(20, 60)
self.toefl_edit = QLineEdit(self)
self.toefl_edit.move(120, 60)
rating_label = QLabel("本科学校评级:", self)
rating_label.move(20, 100)
self.rating_edit = QLineEdit(self)
self.rating_edit.move(120, 100)
statement_label = QLabel("目的陈述:", self)
statement_label.move(20, 140)
self.statement_edit = QTextEdit(self)
self.statement_edit.move(120, 140)
recommendation_label = QLabel("推荐信力度:", self)
recommendation_label.move(20, 240)
self.recommendation_edit = QLineEdit(self)
self.recommendation_edit.move(120, 240)
gpa_label = QLabel("本科绩点:", self)
gpa_label.move(20, 280)
self.gpa_edit = QLineEdit(self)
self.gpa_edit.move(120, 280)
experience_label = QLabel("科研经历:", self)
experience_label.move(20, 320)
self.experience_edit = QTextEdit(self)
self.experience_edit.move(120, 320)
# 创建按钮
predict_button = QPushButton("预测概率", self)
predict_button.move(120, 400)
predict_button.clicked.connect(self.predict)
# 设置窗口大小和标题
self.setGeometry(300, 300, 600, 500)
self.setWindowTitle('大学录取预测器')
self.show()
def predict(self):
# 获取用户输入
gre = int(self.gre_edit.text())
toefl = int(self.toefl_edit.text())
rating = int(self.rating_edit.text())
statement = self.statement_edit.toPlainText()
recommendation = int(self.recommendation_edit.text())
gpa = float(self.gpa_edit.text())
experience = self.experience_edit.toPlainText()
# 将目的陈述和科研经历的文本数据转化为数字
statement_length = len(statement)
experience_length = len(experience)
# 构建特征矩阵
X = [[gre, toefl, rating, statement_length, recommendation, gpa, experience_length]]
# 加载训练好的模型
model = LinearRegression()
model.load('model.pkl')
# 进行预测
y_pred = model.predict(X)
# 显示预测结果
result = f"您拿到国外大学录取通知书的预测概率为:{y_pred[0]:.2f}%"
messagebox.showinfo("预测结果", result)
if __name__ == '__main__':
app = QApplication(sys.argv)
main_window = MainWindow()
sys.exit(app.exec_())
```
在上述代码中,我们首先使用 PyQt5 创建了一个名为 `MainWindow` 的主窗口,并在其中添加了多个标签和输入框,以便用户输入相关信息。然后,我们使用 `QPushButton` 类创建了一个名为 `predict_button` 的按钮,并将其与 `predict` 函数关联起来。当用户点击按钮时,程序会调用 `predict` 函数,获取用户输入的信息,并使用训练好的线性回归模型进行预测。最后,我们使用 tk 库中的 `messagebox.showinfo` 函数来弹出一个提示框,显示用户拿到国外大学录取通知书的预测概率。
请注意,本示例中使用的模型是一个简单的线性回归模型,实际的预测效果可能会受到多种因素的影响。同时,由于 PyQt5 和 tk 都是 Python 的 GUI 库,所以程序中使用了两个不同的 GUI 库来实现不同的功能。
阅读全文