基于pyqt5熵权法的计算App

B站影视 2024-12-10 15:11 2

摘要:熵权法是通过寻找数据本身的规律来赋权重的一种方法。之前介绍了基于MATLAB的guide制作的熵权法计算的GUI界面,基于MATLAB App Designer将熵权法修改成App。但是这些是基于MATLAB环境下才能运行。现在基于pyqt5制作了一个熵权法的

熵权法是通过寻找数据本身的规律来赋权重的一种方法。之前介绍了基于MATLAB的guide制作的熵权法计算的GUI界面,基于MATLAB App Designer将熵权法修改成App。但是这些是基于MATLAB环境下才能运行。现在基于pyqt5制作了一个熵权法的计算App,相对比之前的优势:

1.不需要依赖MATLAB环境,window系统电脑点击EXE可执行即可运行App;

2.对于同一类型的数据,可以对多组数据进行计算;

3.整个文件小,界面操作方便。

基于pyqt5的熵权法的计算App的运行界面如下:

点击导入数据按键——点击开始计算——出现结果显示加载的数据表、每个指标对应的权重和每个个体的得分表——同时生成对应的数据结果exce文件:熵权法综合评价计算结果.xlsx和熵权法综合权重计算结果.xlsx。需要基于MATLAB的熵权法求权重App完整程序,可以进行打赏后截图(50元及以上),在公众号云龙派点击“联系掌门”进行联系,或者在公众号内回复截图,几小时内会回复。App编程不易,还请见谅!

1.基于pyqt5的熵权法求权重App举例

下面是购买轿车的一个决策矩阵,给出了四个方案供我们进行选择,每个方案中均有相同的六个属性(假设均为越大越优型指标),我们需要利用熵值法求出各属性的权重,以及每个方案的综合分数。

本田51.46357奥迪9230759桑塔纳81.811575别克122.518755

Step2:点击加载数据,选择数据excel文件,并点击确定。

Step3:点击开始计算。

2.App主要程序如下

import mathimport sysimport numpy as npimport pandas as pdfrom PyQt5.QtGui import QPixmap, QImagefrom PyQt5.QtWidgets import *from PyQt5.QtCore import *from PyQt5.uic.properties import QtCorefrom openpyxl import *import shangquanfaAppimport osclass ShangQuanToolApp(QMainWindow, shangquanfaApp.Ui_MainWindow):def __init__(self):super.__init__self.setupUi(self)# setup UIself.listenerself.sheet_data = {}# Instantiate the status barself.statusBar = QStatusBar# Set the status bar, similar to layout Settingsself.setStatusBar(self.statusBar)# Cross row color changeself.tableWidget_Weight.setAlternatingRowColors(True)self.tableWidget_Weight.setAlternatingRowColors(True)self.tableWidget_InputData.setAlternatingRowColors(True)self.tableWidget_InputData.setAlternatingRowColors(True)self.tableWidget_ResultData.setAlternatingRowColors(True)self.tableWidget_ResultData.setAlternatingRowColors(True)# Table adaptive widthself.tableWidget_Weight.resizeColumnsToContentsself.tableWidget_InputData.resizeColumnsToContentsself.tableWidget_ResultData.resizeColumnsToContentsself.setWindowTitle("熵权法计算App V1.0")# Monitor function# Display content#self.statusBar.showMessage("本App版权归属于微信公众号云龙派,禁止他人用于二次销售,侵权必究!")def listener(self):# Load Interface tableself.pushButton_LoadData.clicked.connect(self.action_load_table)self.pushButton_Calculate.clicked.connect(self.action_cal_shangquan)self.pushButton_Close.clicked.connect(QCoreApplication.instance.quit)self.pushButton_Clean.clicked.connect(self.action_clean)def action_clean(self):# 清除表格内容self.tableWidget_InputData.setRowCount(0)self.tableWidget_InputData.clearContentsself.tableWidget_ResultData.setRowCount(0)self.tableWidget_ResultData.clearContentsself.tableWidget_Weight.setRowCount(0)self.tableWidget_Weight.clearContentsdef action_load_table(self):self.excel_name, _ = QFileDialog.getOpenFileName(self, "加载数据文件", "./", "Excel (*.xlsx)")# 增加是否为空的判断if self.excel_name == "":self.statusBar.showMessage("数据加载失败,请选择加载的数据!")else:# Reading Excel files, data_only=True is to read the formula calculation value instead of the formula contentself.workbook = load_workbook(self.excel_name, data_only=True)sheet_names = self.workbook.sheetnames # Returns a list of all the sheet names in the Excel filesheet = self.workbook[sheet_names[0]]# Gets the number of rows and columnsrows = sheet.max_rowcols = sheet.max_column# Sets the number of rows and columns for the tableself.tableWidget_InputData.setRowCount(rows)self.tableWidget_InputData.setColumnCount(cols)for col in range(0, cols):for row in range(0, rows):cell_value = sheet.cell(row=row+1, column=col+1).valueself.tableWidget_InputData.setItem(row, col, QTableWidgetItem(str(cell_value)))self.statusBar.showMessage("数据加载成功!")


本文内容来源于网络,仅供参考学习,如内容、图片有任何版权问题,请联系处理,24小时内删除。

作 者 | 郭志龙

来源:再甜也是苦哦

相关推荐