dabrze / topsis-msd-improvement-actions

A Python library for creating TOPSIS rankings and visualizing the alternatives in WMSD for interpretation and designing improvement actions
MIT License
1 stars 0 forks source link
explainability mcda multi-criteria-decision-aid ranking topsis visualization

TOPSIS ranking and interpretation using WMSD-space

This repository hosts the code for WMSDTransformer - a scikit-learn compatible python library, that lets you create TOPSIS rankings of alternatives, visualize rankings in WMSD space, and get suggestions for improvement actions.

Requirements

WMSDTransformer uses PySCIPOpt to determine exact WMSD boundaries quickly. If you use conda, you should be fine performing the follwoing command (easier option):

conda install --channel conda-forge pyscipopt

If you use PyPI, then you will need a working installation of the SCIP Optimization Suite (harder option, but might run faster). Please, make sure that your SCIP installation works, before installing WMSDTransformer. For more details on how to install SCIP, please refer to the PySCIPOpt documentation.

After installing PySCIPOpt (or if you already have SCIP installed), you can install the other dependencies by running:

pip install -r requirements.txt

Installation

Once you have all the dependencies, you can install WMSDTransformer from source. To do so, clone the repository and run the following command in the root directory of the repository:

pip install .

Quickstart

import pandas as pd
from WMSDTransformer import WMSDTransformer

df = pd.read_csv("../data/students.csv", sep=';', index_col= 0)
students_transformer = WMSDTransformer("R") # Relative distance
students_transformer.fit(df, expert_range=[[0,100],[1,6],[1,6]])
students_transformer.transform(df)

Transformed data frame

students_transformer.show_ranking()

Ranking

students_transformer.plot()

WMSD plot

Google Colab notebooks

You can learn about our library using one of those notebooks in Google Colab: https://colab.research.google.com/drive/1umFWSW7hMTGI-3br8GUzaYYSIAADBj6p?usp=sharing https://colab.research.google.com/drive/1UvjUU6iUpkm0oiwi8v-Stn8lVxnAIpvX?usp=sharing https://colab.research.google.com/drive/1UiyJOv11c0YlMctPCSQ7-wZfGVvCixPH?usp=sharing https://colab.research.google.com/drive/1qzZ2g18oR9l2abD16SDbZRx1LoCl33sh?usp=sharing

Citation

If you use this project in your research, please consider citing the following papers: