Skip to main content

Librería de algoritmos de Inteligencia Artificial en Python.

Project description

Paquete Inteligencia Artificial

Paquete de algoritmos de Inteligencia Artificial para aprendizaje de estructura de Redes Bayesianas.

Instalación

pip install inteligenciartificial

O desde fuente local:

pip install ./fia

Uso

Algoritmos de aprendizaje de estructura

K2

Algoritmo greedy que requiere un orden topológico de variables. Agrega padres iterativamente si mejoran la métrica de scoring.

from inteligenciartificial.modelografosprobabilisticos.busqueda import K2
from inteligenciartificial.modelografosprobabilisticos.metricas import Entropia, BIC

orden = ["Churn", "tenure_cat", "OnlineSecurity", "TechSupport", "Contract"]
k2 = K2(orden, max_padres=4, df=df_train, metrica=Entropia())
# [K2] Grafos explorados: 35 | Tiempo: 0.1234 s | Throughput: 283.61 grafos/s

modelo = k2.fit(X_train, y_train, alpha=1.0)

Hill-Climbing

Algoritmo de búsqueda local que en cada paso evalúa operaciones de agregar, eliminar e invertir aristas, seleccionando la que mayor mejora produce.

A partir de la versión 0.0.6 acepta configurar el estado inicial:

  • Por defecto parte de un grafo vacío.
  • grafo_inicial: Grafo desde el cual iniciar la búsqueda.
  • grafos_iniciales: lista de Grafo para ejecutar varias corridas con inicios manuales.
  • reinicios + seed: número de reinicios desde DAGs aleatorios reproducibles.
from inteligenciartificial.modelografosprobabilisticos.busqueda import HillClimbing
from inteligenciartificial.modelografosprobabilisticos.metricas import BIC
from inteligenciartificial.modelografosprobabilisticos.grafo import Grafo

variables = ["Churn", "tenure_cat", "OnlineSecurity", "TechSupport", "Contract"]

# Inicio por defecto (grafo vacío)
hc = HillClimbing(variables, max_padres=4, df=df_train, metrica=BIC(), max_iter=100)

# Inicio desde un grafo dado
hc = HillClimbing(variables, max_padres=4, df=df_train, metrica=BIC(), max_iter=100,
                  grafo_inicial=Grafo([("Contract", "Churn")]))

# Reinicios aleatorios reproducibles
hc = HillClimbing(variables, max_padres=4, df=df_train, metrica=BIC(), max_iter=100,
                  reinicios=5, seed=42)

# Reinicios manuales
hc = HillClimbing(variables, max_padres=4, df=df_train, metrica=BIC(), max_iter=100,
                  grafos_iniciales=[Grafo([]), Grafo([("Contract", "Churn")])])

modelo = hc.fit(X_train, y_train, alpha=1.0)

Simulated Annealing

Búsqueda estocástica que en cada iteración propone una operación vecina aleatoria (agregar / eliminar / invertir arista). Si la operación mejora el score se acepta; si lo empeora, se acepta con probabilidad exp(Δ / T). La temperatura decae geométricamente con factor enfriamiento.

from inteligenciartificial.modelografosprobabilisticos.busqueda import SimulatedAnnealing
from inteligenciartificial.modelografosprobabilisticos.metricas import BIC

sa = SimulatedAnnealing(
    variables, max_padres=4, df=df_train, metrica=BIC(),
    max_iter=2000, t_inicial=1.0, t_min=1e-3, enfriamiento=0.995, seed=42,
)
modelo = sa.fit(X_train, y_train, alpha=1.0)

Métricas de throughput

Todos los algoritmos (K2, Hill-Climbing y Simulated Annealing) reportan automáticamente al finalizar el entrenamiento:

Atributo Descripción
grafos_explorados Cantidad de configuraciones de grafo (conjuntos de padres) evaluadas
tiempo_segundos Tiempo total de la búsqueda de estructura en segundos
throughput Tasa de exploración: grafos_explorados / tiempo_segundos (grafos/s)
print(k2.grafos_explorados)   # e.g., 35
print(k2.tiempo_segundos)     # e.g., 0.1234
print(k2.throughput)           # e.g., 283.61

Métricas de scoring

Métrica Descripción
Entropia Usa -H(X|Pa) como score (mayor es mejor)
BIC Bayesian Information Criterion con penalización (k/2)*log(N)

Modelos

  • RedBayesiana: Red Bayesiana discreta con CPTs estimadas por conteos + suavizado Dirichlet(alpha).
  • NaiveBayes: Caso especial donde todas las features dependen únicamente de la clase.

Dependencias

  • numpy >= 1.23
  • pandas >= 1.5

Licencia

MIT

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

inteligenciartificial-0.0.6.tar.gz (14.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

inteligenciartificial-0.0.6-py3-none-any.whl (20.1 kB view details)

Uploaded Python 3

File details

Details for the file inteligenciartificial-0.0.6.tar.gz.

File metadata

  • Download URL: inteligenciartificial-0.0.6.tar.gz
  • Upload date:
  • Size: 14.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.12

File hashes

Hashes for inteligenciartificial-0.0.6.tar.gz
Algorithm Hash digest
SHA256 70ff8719bb30e00636ef62890c15c1f37fe48590d05254954a1bd4ef4264b12d
MD5 ae67f63bacc859a95b0008a679afd384
BLAKE2b-256 3ab84c2ae2ad268bae5a5c5ed5904fa6153d7443a2df7f7a6051e8a8e4c7e0ac

See more details on using hashes here.

File details

Details for the file inteligenciartificial-0.0.6-py3-none-any.whl.

File metadata

File hashes

Hashes for inteligenciartificial-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 0967e528897ace1c1fb728d77ddcd7645a4a9baa25bc57c5324d8d9f4221b61b
MD5 2c92fa375faf3c6e4f210c9cee19a5b5
BLAKE2b-256 bfc559a69b80c2d0ea054cb77fc250ffab3fbc063970088fa12415cfd18f31c0

See more details on using hashes here.

Supported by

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