You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
11 KiB

import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QWidget from PyQt5.QtGui import QPixmap from functools import partial import datetime import numpy as np import pandas as pd import FirstUi import SecondUi import ThirdUi from sklearn.model_selection import train_test_split from sklearn.metrics import classification_report import matplotlib.pyplot as plt import seaborn from sklearn.preprocessing import OneHotEncoder as ohe from sklearn.preprocessing import OrdinalEncoder as ode from sklearn.preprocessing import KBinsDiscretizer from sklearn.linear_model import LogisticRegression class Util: def __init__(self, F_Widget, S_Widget, T_Widget, S_Ui, T_Ui): self.F_Widget = F_Widget self.S_Widget = S_Widget self.T_Widget = T_Widget self.S_Ui = S_Ui self.T_Ui = T_Ui self.TrainFile = None self.TestFile = None self.TestSurvived = None self.fig = None self.canvas = None self.train = None self.test = None self.y_test = None self.pred_x = None self.train_y = None self.train_x = None self.test_x = None self.test_y = None # 将按钮与槽函数连接(数据导入) self.F_Widget.pushButton.clicked.connect(self.DataInput) self.S_Widget.pushButton.clicked.connect(partial(self.OpenFile, self.S_Widget.lineEdit)) self.S_Widget.pushButton_2.clicked.connect(partial(self.OpenFile, self.S_Widget.lineEdit_2)) self.S_Widget.pushButton_5.clicked.connect(partial(self.OpenFile, self.S_Widget.lineEdit_3)) self.S_Widget.pushButton_3.clicked.connect(self.FileReady) self.S_Widget.pushButton_4.clicked.connect(self.FileClear) self.S_Widget.lineEdit.textChanged.connect(partial(self.SetFileInfo, self.S_Widget.lineEdit, 1)) self.S_Widget.lineEdit_2.textChanged.connect(partial(self.SetFileInfo, self.S_Widget.lineEdit_2, 2)) self.S_Widget.lineEdit_3.textChanged.connect(partial(self.SetFileInfo, self.S_Widget.lineEdit_3, 3)) # 将按钮与槽函数连接(特征分析) self.F_Widget.pushButton_2.clicked.connect(self.DataProcess) # 将按钮与槽函数连接(算法预测) self.F_Widget.pushButton_3.clicked.connect(self.predicted) def SetFileInfo(self, line, num): if num == 1: if line.text() != '': self.TrainFile = line.text() if num == 2: if line.text() != '': self.TestFile = line.text() if num == 3: if line.text() != '': self.TestSurvived = line.text() def DataInput(self): self.S_Ui.show() def FileClear(self): if self.TrainFile is not None or self.TestFile is not None or self.TestSurvived is not None: self.TrainFile = None self.TestFile = None self.TestSurvived = None self.S_Widget.lineEdit.clear() self.S_Widget.lineEdit_2.clear() self.S_Widget.lineEdit_3.clear() curr_time = datetime.datetime.now() time_str = datetime.datetime.strftime(curr_time, '%Y-%m-%d %H:%M:%S') self.F_Widget.textBrowser.append(time_str + ":" + "数据清除成功") self.S_Ui.close() def FileReady(self): if self.TrainFile is not None and self.TestFile is not None and self.TestSurvived is not None: curr_time = datetime.datetime.now() time_str = datetime.datetime.strftime(curr_time, '%Y-%m-%d %H:%M:%S') self.F_Widget.textBrowser.append(time_str + ":" + "数据导入成功") self.S_Ui.close() def OpenFile(self, line): # 第一个参数指向父组件 filename, type = QFileDialog.getOpenFileName(self.S_Ui, "选择目录", r"C:\Users\Administrator\Desktop") line.setText(filename) def DataProcess(self): curr_time = datetime.datetime.now() time_str = datetime.datetime.strftime(curr_time, '%Y-%m-%d %H:%M:%S') self.F_Widget.textBrowser.a