This package allow to minimize the output from a given Decision Tree.
Project description
minDt
A ferramenta de código aberto que permite mellorar a explicabilidade das saídas das árbores de decisión. Está basada no algoritmo de Quine-McCluskey, representando os camiños dunha árbore de decisión como implicantes de intervalos de valores.
Estrutura do repositorio
/src
: aquí atópase o código fonte da ferramenta. Atopamonos con dúas implementacións, onde a segunda representa unha optimización da primeira./tests
: aquí atópanse exemplos de árbores reais e sintéticos que se usaron durante o desenvolvemento para probar o funcionamento do código. Tamén se inclúen unha implementación do algoritmo en prolog e diversos scripts de bash para comparar os tempos de execución das implementacións. Tamén hai algúns scripts usados para xerar .csv cos tempos e a construcción e gráficas.
Instalación
O paquete atópase dispoñible en Pypi polo que, para a súa instalación, sería suficiente con executar o siguiente comando.
pip install mindt-Selino
Para o uso do código en si, é suficiente con ter instalado Python >3.8. Se se quere indagar nas probas de tempos e demais, hai máis dependencias que se deberían instalar como seaborn, numpy ou pandas.
Formato de entrada
A entrada da ferramenta para poder minimizar unha árbore ten que respetar o seguinte formato:
3
100
100
100
50 100 0 50 50 100
0 100 50 100 50 100
50 100 50 100 0 50
50 100 0 100 50 100
50 100 50 100 50 100
Onde a primeira liña representa o número de variables. As n seguintes o valor máximo da variable (supoñendo que o valor mínimo é cero) e as restantes todos as regras que clasifican nunha mesma instancia. Pódese tamén pasar un valor mínimo para cada variable. O funcionamento está pensado para árbores binarias, polo cal, os implicantes poderían representar unha clase ou a outra pero non as dúas. Cada un dos implicantes ven dado por parellas de valores que representan os intervalos de cada variable nesa solución. Se a variable non aparece nesa regra, o intervalo vai ser o valor mínimo e máximo da variable.
Exemplos de uso
Neste apartado inclúense dous pequenos scripts de exemplo para poder probar a ferramenta. Este código pódese atopar na carpeta tests nos ficheiros testMinimization.py e testOptimized.py.
from mindt_Selino.dtMinimisation import DtMinimisation
minimization = DtMinimisation("tests/test2/GeneratedExamples/ex.5_3_10")
minimization.printInput()
minimization.printStaggeredInput()
minimization.printOutput()
minimization.saveOutputInFile("output.txt")
Neste primeiro caso estamos minimizando un dos exemplos sintéticos, onde o ficheiro está no formato de entrada especificado e facemos uso das función da clase DtMinimization para ir imprimindo o conxunto de regras según van pasando fases da execución. Tamén se pode usar a saída, representada como unha lista de implicantes. Finalmente gardase a saída no path que se lle pasa como parámetro.
Con só crear unha instancia, o proceso de minimización xa comeza automaticamente.
from mindt_Selino.dtMinOptimized import DtMinOptimized
minimization = DtMinOptimized("tests/test2/GeneratedExamples/ex.5_3_10")
minimization.printInput()
minimization.printStaggeredInput()
minimization.printOutput()
minimization.saveOutputInFile("output.txt")
O mesmo pero para un intento de optimización do código que non funcionou como se esperaba.
Licenza
Este proxecto atópase baixo a licenza de código aberto Mozilla. Véxase LICENSE.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file mindt_selino-0.1.2.tar.gz
.
File metadata
- Download URL: mindt_selino-0.1.2.tar.gz
- Upload date:
- Size: 449.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44f45bbca084f7e131a3c1ecd37599357d83f3ec69e9ee3ca252b0212b95e747 |
|
MD5 | 7416cfb8672538aa59245cbac0935242 |
|
BLAKE2b-256 | 07ee4b9cf6122fd9e16b50bb43143d58417e13404c2a65f300e5ff1f95032e47 |
File details
Details for the file mindt_selino-0.1.2-py3-none-any.whl
.
File metadata
- Download URL: mindt_selino-0.1.2-py3-none-any.whl
- Upload date:
- Size: 15.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a538016f5851deae6e8826876b7a8c76a6342e8c23609ea85ae725440b52e903 |
|
MD5 | e2079b8f0de1248a8c3a3fb27101b37b |
|
BLAKE2b-256 | c972648a0cb53b4479769201e53b2ca543601c40c797fa367d6facd1c6863bbd |