用pycharm和pyqt5编写一个程序,实现用户登录界面后输入GRE分数,TOEFL分数,本科学校评级,目的陈述,推荐信力度,本科绩点,科研经历后给出用户拿到国外大学录取通知书的预测概率并给出实现代码
时间: 2023-11-12 07:03:39 浏览: 91
以下是一个简单的示例代码,该代码使用PyQt5实现了一个用户界面,并使用scikit-learn库中的逻辑回归模型来预测用户是否能够被国外大学录取。
```python
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QLineEdit, QPushButton, QVBoxLayout, QWidget
import sys
import numpy as np
from sklearn.linear_model import LogisticRegression
class LoginWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("登录")
self.setFixedSize(300, 300)
# 字体
font = QFont()
font.setPointSize(12)
# 标签和文本框
self.gre_label = QLabel("GRE分数")
self.gre_textbox = QLineEdit()
self.gre_textbox.setPlaceholderText("请输入GRE分数")
self.gre_textbox.setValidator(QtGui.QIntValidator())
self.toefl_label = QLabel("TOEFL分数")
self.toefl_textbox = QLineEdit()
self.toefl_textbox.setPlaceholderText("请输入TOEFL分数")
self.toefl_textbox.setValidator(QtGui.QIntValidator())
self.rank_label = QLabel("本科学校评级")
self.rank_textbox = QLineEdit()
self.rank_textbox.setPlaceholderText("请输入本科学校评级")
self.rank_textbox.setValidator(QtGui.QIntValidator())
self.statement_label = QLabel("目的陈述")
self.statement_textbox = QLineEdit()
self.statement_textbox.setPlaceholderText("请输入目的陈述")
self.letter_label = QLabel("推荐信力度")
self.letter_textbox = QLineEdit()
self.letter_textbox.setPlaceholderText("请输入推荐信力度")
self.letter_textbox.setValidator(QtGui.QIntValidator())
self.gpa_label = QLabel("本科绩点")
self.gpa_textbox = QLineEdit()
self.gpa_textbox.setPlaceholderText("请输入本科绩点")
self.research_label = QLabel("科研经历")
self.research_textbox = QLineEdit()
self.research_textbox.setPlaceholderText("请输入科研经历")
# 预测按钮
self.predict_button = QPushButton("预测")
self.predict_button.clicked.connect(self.predict)
# 布局
layout = QVBoxLayout()
layout.addWidget(self.gre_label)
layout.addWidget(self.gre_textbox)
layout.addWidget(self.toefl_label)
layout.addWidget(self.toefl_textbox)
layout.addWidget(self.rank_label)
layout.addWidget(self.rank_textbox)
layout.addWidget(self.statement_label)
layout.addWidget(self.statement_textbox)
layout.addWidget(self.letter_label)
layout.addWidget(self.letter_textbox)
layout.addWidget(self.gpa_label)
layout.addWidget(self.gpa_textbox)
layout.addWidget(self.research_label)
layout.addWidget(self.research_textbox)
layout.addWidget(self.predict_button)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
def predict(self):
# 获取输入值
gre = int(self.gre_textbox.text())
toefl = int(self.toefl_textbox.text())
rank = int(self.rank_textbox.text())
statement = self.statement_textbox.text()
letter = int(self.letter_textbox.text())
gpa = float(self.gpa_textbox.text())
research = self.research_textbox.text()
# 使用逻辑回归模型预测录取概率
X = np.array([[gre, toefl, rank, letter, gpa]])
lr = LogisticRegression()
lr.fit(X, [1])
prob = lr.predict_proba(X)[0][1]
# 显示预测结果
result_label = QLabel("预测概率:{:.2f}%".format(prob * 100))
result_label.setAlignment(Qt.AlignCenter)
result_label.setFont(QFont("Arial", 14, QFont.Bold))
result_label.setStyleSheet("color: blue")
layout = QVBoxLayout()
layout.addWidget(result_label)
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = LoginWindow()
window.show()
sys.exit(app.exec_())
```
在这个示例代码中,我们首先定义了一个名为`LoginWindow`的类,该类继承自`QMainWindow`。在该类的`__init__`方法中,我们创建了一些标签和文本框,用于接收用户的输入。我们还创建了一个预测按钮,用于触发预测操作。
在`predict`方法中,我们获取了用户输入的值,并使用逻辑回归模型来预测用户的录取概率。最后,我们将预测结果显示在一个新的标签中,用于告诉用户预测结果。
在`if __name__ == "__main__":`块中,我们创建了一个`QApplication`对象,并将`LoginWindow`对象显示在屏幕上。当用户输入完毕并单击预测按钮时,我们将调用`predict`方法来预测录取概率,并将结果显示在屏幕上。
请注意,这只是一个简单的示例代码,您可能需要根据您自己的需求进行修改和调整。
阅读全文