Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mindt_selino-0.1.2.tar.gz (449.3 kB view details)

Uploaded Source

Built Distribution

mindt_selino-0.1.2-py3-none-any.whl (15.1 kB view details)

Uploaded Python 3

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

Hashes for mindt_selino-0.1.2.tar.gz
Algorithm Hash digest
SHA256 44f45bbca084f7e131a3c1ecd37599357d83f3ec69e9ee3ca252b0212b95e747
MD5 7416cfb8672538aa59245cbac0935242
BLAKE2b-256 07ee4b9cf6122fd9e16b50bb43143d58417e13404c2a65f300e5ff1f95032e47

See more details on using hashes here.

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

Hashes for mindt_selino-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 a538016f5851deae6e8826876b7a8c76a6342e8c23609ea85ae725440b52e903
MD5 e2079b8f0de1248a8c3a3fb27101b37b
BLAKE2b-256 c972648a0cb53b4479769201e53b2ca543601c40c797fa367d6facd1c6863bbd

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page