""

domingo, 4 de octubre de 2026

IA, Hugging Face, Aplicada a la ingeniería mecánica

Prompt for Gemini:

¿Cómo puedo aprovechar Hugging face desde Python? indícame ejemplos resueltos de aplicación relacionada con ingeniería mecánica

NOTA: si quieres saber en que consiste Hugging face haz clic aquí:

Ejemplo 1.
>>! pip install transformers
............................................................................................................................
Requirement already satisfied: transformers in /usr/local/lib/python3.13/dist-packages (5.17.0) Requirement already satisfied: huggingface-hub<2.0,>=1.5.0 in /usr/local/lib/python3.13/dist-packages (from transformers) (1.31.0) Requirement already satisfied: numpy>=1.17 in /usr/local/lib/python3.13/dist-packages (from transformers) (2.1.3) Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.13/dist-packages (from transformers) (26.3) Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.13/dist-packages (from transformers) (6.0.3) Requirement already satisfied: regex>=2025.10.22 in /usr/local/lib/python3.13/dist-packages (from transformers) (2025.11.3) Requirement already satisfied: tokenizers<0.24.0,>=0.23.1 in /usr/local/lib/python3.13/dist-packages (from transformers) (0.23.2) Requirement already satisfied: typer in /usr/local/lib/python3.13/dist-packages (from transformers) (0.27.2) Requirement already satisfied: safetensors>=0.8.0 in /usr/local/lib/python3.13/dist-packages (from transformers) (0.8.0) Requirement already satisfied: tqdm>=4.60 in /usr/local/lib/python3.13/dist-packages (from transformers) (4.67.3) Requirement already satisfied: click<9.0.0,>=8.4.2 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (8.5.0) Requirement already satisfied: filelock>=3.10.0 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (3.32.7) Requirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (2025.12.0) Requirement already satisfied: hf-xet<2.0.0,>=1.5.2 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (1.6.0) Requirement already satisfied: httpx<1,>=0.23.0 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (0.28.1) Requirement already satisfied: typing-extensions>=4.1.0 in /usr/local/lib/python3.13/dist-packages (from huggingface-hub<2.0,>=1.5.0->transformers) (4.16.0) Requirement already satisfied: shellingham>=1.3.0 in /usr/local/lib/python3.13/dist-packages (from typer->transformers) (1.5.4) Requirement already satisfied: rich>=13.8.0 in /usr/local/lib/python3.13/dist-packages (from typer->transformers) (13.9.4) Requirement already satisfied: annotated-doc>=0.0.2 in /usr/local/lib/python3.13/dist-packages (from typer->transformers) (0.0.5) Requirement already satisfied: anyio in /usr/local/lib/python3.13/dist-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (4.15.1) Requirement already satisfied: certifi in /usr/local/lib/python3.13/dist-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (2026.7.22) Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.13/dist-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (1.0.9) Requirement already satisfied: idna in /usr/local/lib/python3.13/dist-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (3.19) Requirement already satisfied: h11>=0.16 in /usr/local/lib/python3.13/dist-packages (from httpcore==1.*->httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.5.0->transformers) (0.16.0) Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.13/dist-packages (from rich>=13.8.0->typer->transformers) (4.2.0) Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.13/dist-packages (from rich>=13.8.0->typer->transformers) (2.21.0) Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.13/dist-packages (from markdown-it-py>=2.2.0->rich>=13.8.0->typer->transformers) (0.1.2)
...............................................................................................
>>from transformers import pipeline

>>classifier = pipeline("sentiment-analysis")
>>resultado = classifier("¡Me encanta aprender sobre inteligencia artificial!")
>>print(resultado)
..........................................................................
[transformers] No model was supplied, defaulted to distilbert/distilbert-base-uncased-finetuned-sst-2-english and revision 714eb0f.
Using a pipeline without specifying a model name and revision in production is not recommended.
Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.
WARNING:huggingface_hub.utils._http:Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.
config.json: 100%
 629/629 [00:00<00:00, 73.0kB/s]
model.safetensors: reconstructing file: 100%
  268MB /  268MB, 20.7MB/s  
model.safetensors: downloading bytes: 
  250MB, 21.9MB/s  
Loading weights: 100%
 104/104 [00:00<00:00, 3059.60it/s]
tokenizer_config.json: 100%
 48.0/48.0 [00:00<00:00, 5.33kB/s]
vocab.txt: 100%
 232k/232k [00:00<00:00, 3.04MB/s]
[{'label': 'NEGATIVE', 'score': 0.9969039559364319}]
.........................................................................

¡Excelente pregunta! Hugging Face es una plataforma sumamente poderosa que va mucho más allá del análisis de sentimiento básico.

Antes de ver los ejemplos de ingeniería mecánica, es importante notar por qué tu celda anterior clasificó la frase "¡Me encanta aprender sobre inteligencia artificial!" como NEGATIVE (con un 99.6% de confianza). Esto ocurrió porque el pipeline por defecto utiliza un modelo entrenado únicamente en inglés (distilbert-base-uncased-finetuned-sst-2-english). Al recibir texto en español, el modelo se confunde por completo.


A continuación, te presento una guía práctica con ejemplos resueltos y adaptados a la Ingeniería Mecánica utilizando modelos multilingües o específicos para resolver tareas de:

  1. Clasificación de fallas y reportes de mantenimiento (Análisis de texto técnico).
  2. Extracción de información (NER) en especificaciones de maquinaria.
  3. Búsqueda semántica / Preguntas y Respuestas (Q&A) sobre manuales de operación.

### 1. Clasificación de Reportes de Mantenimiento y Fallas de Maquinaria

En ingeniería mecánica, a menudo se reciben reportes de fallas escritos por operarios en texto libre. Podemos clasificar automáticamente estos reportes en categorías de criticidad o por subsistemas mecánicos involucrados (por ejemplo: *Estructural, Hidráulico, Eléctrico, Térmico*).

Utilizaremos un clasificador "Zero-Shot" (que no requiere reentrenamiento) compatible con español.

>>from transformers import pipeline

>># Cargamos un pipeline de clasificación zero-shot compatible con español
>>classifier = pipeline(
    "zero-shot-classification",
    model="facebook/bart-large-mnli"
)

>># Reporte técnico real de un entorno industrial
>>reporte = "Se observa un incremento de vibraciones anormales y ruido metálico
en la zona del rodamiento del eje principal, acompañado de un ligero aumento de temperatura."

>># Categorías mecánicas que queremos evaluar
>>categorias = ["Falla Estructural", "Problema de Lubricación", "Desgaste Mecánico", "Anomalía Térmica"]

>># Realizamos la clasificación
>>resultado = classifier(reporte, candidate_labels=categorias)

>># Mostramos los resultados
>>print(f"Reporte analizado: '{reporte}'\n")
>>print("Predicciones de fallas de ingeniería:")
>>for label, score in zip(resultado['labels'], resultado['scores']):
>>    print(f"- {label}: {score:.2%}")
...............................................................................................
config.json: 100%
 1.15k/1.15k [00:00<00:00, 111kB/s]
model.safetensors: reconstructing file: 100%
 1.63GB / 1.63GB,  102MB/s  
model.safetensors: downloading bytes: 
 1.09GB, 72.3MB/s  
Loading weights: 100%
 515/515 [00:00<00:00, 5896.39it/s]
tokenizer_config.json: 100%
 26.0/26.0 [00:00<00:00, 3.37kB/s]
vocab.json: 100%
 899k/899k [00:00<00:00, 6.75MB/s]
merges.txt: 100%
 456k/456k [00:00<00:00, 23.9MB/s]
tokenizer.json: 100%
 1.36M/1.36M [00:00<00:00, 28.7MB/s]
Reporte analizado: 'Se observa un incremento de vibraciones anormales y ruido metálico en la zona del rodamiento del eje principal, acompañado de un ligero aumento de temperatura.'

Predicciones de fallas de ingeniería:
- Anomalía Térmica: 39.33%
- Desgaste Mecánico: 25.57%
- Falla Estructural: 18.60%
- Problema de Lubricación: 16.50%
...............................................................................................

### 2. Extracción de Entidades (NER) en Manuales de Maquinaria y Planos

Podemos procesar texto de especificaciones técnicas o requerimientos de diseño mecánico para extraer automáticamente componentes,
mediciones o parámetros críticos de operación (como temperaturas, presiones o materiales).

>># Cargamos un modelo de Reconocimiento de Entidades Nombradas (NER)
>># En este caso, utilizaremos un modelo genérico que identifica organizaciones, locaciones y componentes.
>>ner_pipeline = pipeline(
    "ner",
    model="mrm8488/bert-spanish-cased-finetuned-ner",
    aggregation_strategy="simple"
)

>>texto_tecnico = "La bomba hidráulica de desplazamiento positivo debe operar a una presión nominal de 150 bar usando aceite lubricante ISO VG 46 de la marca Repsol."

>>entidades = ner_pipeline(texto_tecnico)

>>print("Entidades clave identificadas en la especificación mecánica:")
>>for ent in entidades:
>>    print(f"- Texto: '{ent['word']}' | Categoría: {ent['entity_group']} | Confianza: {ent['score']:.2%}")
config.json: 100%
 829/829 [00:00<00:00, 81.1kB/s]
pytorch_model.bin: reconstructing file: 100%
  439MB /  439MB, 34.9MB/s  
pytorch_model.bin: downloading bytes: 
  417MB, 36.4MB/s  
Loading weights: 100%
 199/199 [00:00<00:00, 6365.23it/s]
[transformers] BertForTokenClassification LOAD REPORT from: mrm8488/bert-spanish-cased-finetuned-ner
Key                      | Status     |  | 
-------------------------+------------+--+-
bert.pooler.dense.bias   | UNEXPECTED |  | 
bert.pooler.dense.weight | UNEXPECTED |  | 

Notes:
- UNEXPECTED:	can be ignored when loading from different task/architecture; not ok if you expect identical arch.
tokenizer_config.json: 100%
 136/136 [00:00<00:00, 17.9kB/s]
model.safetensors: reconstructing file:  64%
  281MB /  439MB, 9.03MB/s  
model.safetensors: downloading bytes: 
  361MB, 30.2MB/s  
vocab.txt: 100%
 242k/242k [00:00<00:00, 8.57MB/s]
special_tokens_map.json: 100%
 112/112 [00:00<00:00, 2.78kB/s]
Entidades clave identificadas en la especificación mecánica:
- Texto: 'ISO VG 46' | Categoría: MISC | Confianza: 99.85%
- Texto: 'Repsol' | Categoría: ORG | Confianza: 95.96%



sábado, 3 de octubre de 2026

ReliaWiki -- Ejemplo #2. Weibull 3P, resuelto por medio de Reliability en Google Colab.

Ejemplo original tomado de: https://help.reliasoft.com/articles/content/hotwire/issue148/hottopics148.htm 

Por ejemplo, considere el siguiente conjunto de datos: 100, 218, 334, 556, 867 y 1234.

Cuando no se selecciona Usar MLE 3-P verdadero en Weibull, se calcula Los resultados son:


 γ es 28,5, que se calcula utilizando El método de estimación de mínimos cuadrados.

A continuación se muestra el gráfico de valores de probabilidad 3D.



Cuando se selecciona Usar MLE 3-P verdadero en Weibull, se calcula Los resultados son:




El gráfico de valores de probabilidad 3D es:





Solución al ejemplo #2, en Google Colab. Fuente: PPI

1. Instalación de la librería: >> ! pip install reliabitily

2. 
>># Ajustar una distribucion de weibull 3P a los datos de falla
>>from reliability.Fitters import Fit_Weibull_3P # importando modulo
>>import matplotlib.pyplot as plt # importando modulo
>>data = [100, 218, 334, 556, 867, 1234]
>>wb = Fit_Weibull_3P(failures=data)
>>plt.show()

.....................................................................
Results from Fit_Weibull_3P (95% CI):
Analysis method: Maximum Likelihood Estimation (MLE)
Optimizer: TNC
Failures / Right censored: 6/0 (0% right censored) 

Parameter  Point Estimate  Standard Error  Lower CI  Upper CI
    Alpha         276.272         316.895   29.1728   2616.36
     Beta        0.363495        0.141473  0.169515  0.779451
    Gamma         99.9999     0.000123239   99.9997       100 

Goodness of fit    Value
 Log-likelihood -37.5803
           AICc  93.1607
            BIC  80.5359
             AD  2.83028 

3. vamos a crear la distribución de Weibull con los 3 parámetros encontrados


>>from reliability.Distributions import Weibull_Distribution
>>import matplotlib.pyplot as plt

>>dist = Weibull_Distribution(alpha=276.272, beta=0.363, gamma=100.0)  # this created the distribution object
>>dist.PDF()  # this creates the plot of the PDF
>>plt.show()

4. Grafiquemos las demás funciones de distribución

>>dist.plot()



ReliaWiki -- Ejemplo #1 de la sección 148, resuelto con Reliability en Google Colab.

Ejercicio tomado de: https://help.reliasoft.com/articles/content/hotwire/issue148/hottopics148.htm

Utilicemos un ejemplo simple de Weibull de 2 parámetros para explicar esto. Supongamos que tenemos el siguientes tiempos de falla: 15, 34, 56, 67, 118 y 234. Las soluciones MLE son:


A continuación se muestra el gráfico 3D de los valores de probabilidad.


SOLUCION CON LA LIBRERIA RELIABILITY EN GOOGLE COLAB

1. Instalación de la librería

>>! pip install reliability

Collecting reliability
  Downloading reliability-0.9.0-py3-none-any.whl.metadata (6.5 kB)
Requirement already satisfied: autograd>=1.7.0 in /usr/local/lib/python3.13/dist-packages (from reliability) (1.9.1)
Requirement already satisfied: scipy>=1.15.0 in /usr/local/lib/python3.13/dist-packages (from reliability) (1.16.3)
Collecting numpy>=2.2.0 (from reliability)
  Downloading numpy-2.5.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl.metadata (6.6 kB)
Requirement already satisfied: matplotlib>=3.10.0 in /usr/local/lib/python3.13/dist-packages (from reliability) (3.10.0)
Requirement already satisfied: pandas>=2.2.0 in /usr/local/lib/python3.13/dist-packages (from reliability) (2.2.3)
Collecting autograd-gamma>=0.5.0 (from reliability)
  Downloading autograd-gamma-0.5.0.tar.gz (4.0 kB)
  Preparing metadata (setup.py) ... done
Collecting mplcursors>=0.6 (from reliability)
  Downloading mplcursors-0.7.1-py3-none-any.whl.metadata (2.0 kB)
Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.13/dist-packages (from matplotlib>=3.10.0->reliability) (1.4.0)
Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.13/dist-packages (from matplotlib>=3.10.0->reliability) (0.12.1)
Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.13/dist-packages (from matplotlib>=3.10.0->reliability) (4.65.0)
Requirement already satisfied: kiwisolver>=1.3.1 in /usr/local/lib/python3.13/dist-packages (from matplotlib>=3.10.0->reliability) (1.5.1)
Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.13/dist-packages (from matplotlib>=3.10.0->reliability) (26.3)
Requirement already satisfied: pillow>=8 in /usr/local/lib/python3.13/dist-packages (from matplotlib>=3.10.0->reliability) (11.3.0)
Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.13/dist-packages (from matplotlib>=3.10.0->reliability) (3.3.2)
Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.13/dist-packages (from matplotlib>=3.10.0->reliability) (2.9.0.post0)
Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.13/dist-packages (from pandas>=2.2.0->reliability) (2025.2)
Requirement already satisfied: tzdata>=2022.7 in /usr/local/lib/python3.13/dist-packages (from pandas>=2.2.0->reliability) (2026.4)
Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.13/dist-packages (from python-dateutil>=2.7->matplotlib>=3.10.0->reliability) (1.17.0)
Downloading reliability-0.9.0-py3-none-any.whl (257 kB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 257.2/257.2 kB 4.8 MB/s eta 0:00:00
Downloading mplcursors-0.7.1-py3-none-any.whl (20 kB)
Downloading numpy-2.5.3-cp313-cp313-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl (16.7 MB)
   ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 16.7/16.7 MB 35.5 MB/s eta 0:00:00
Building wheels for collected packages: autograd-gamma
  Building wheel for autograd-gamma (setup.py) ... done
  Created wheel for autograd-gamma: filename=autograd_gamma-0.5.0-py3-none-any.whl size=4120 sha256=63f4f477a5c5c8ffa6ed359be999c33053a7eca80f5e9ed47446fb68a4b7e2e3
  Stored in directory: /root/.cache/pip/wheels/7e/16/46/9477f188924292d3bf1fb8fb42844201591abfc19b7ba6d868
Successfully built autograd-gamma
Installing collected packages: numpy, autograd-gamma, mplcursors, reliability
  Attempting uninstall: numpy
    Found existing installation: numpy 2.1.3
    Uninstalling numpy-2.1.3:
      Successfully uninstalled numpy-2.1.3
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
numba 0.61.2 requires numpy<2.3,>=1.24, but you have numpy 2.5.3 which is incompatible.
Successfully installed autograd-gamma-0.5.0 mplcursors-0.7.1 numpy-2.5.3 reliability-0.9.0
WARNING: The following packages were previously imported in this runtime:
  [numpy]
You must restart the runtime in order to use newly installed versions.


2. Ajustamos una distribución de Weibull 2P a los datos de falla para encontrar los parámetros de forma (beta) y de escala (Alpha) por medio del método MLE.

>># Ajustar una distribución de weibull 2P a los datos de falla

>>from reliability.Fitters import Fit_Weibull_2P # importando modulo

>>import matplotlib.pyplot as plt # importanto modulo

>>data = [15, 34, 56, 67, 118, 234] 

>>wb = Fit_Weibull_2P(failures=data)

>>plt.show()

Results from Fit_Weibull_2P (95% CI):
Analysis method: Maximum Likelihood Estimation (MLE)
Optimizer: TNC
Failures / Right censored: 6/0 (0% right censored) 

Parameter  Point Estimate  Standard Error  Lower CI  Upper CI
    Alpha         94.3817         32.4688   48.0906   185.232
     Beta         1.25698        0.392399  0.681714   2.31768 

Goodness of fit    Value
 Log-likelihood -32.5783
           AICc  73.1567
            BIC  68.7402
             AD  2.12213 


El grafico nos muestra la CDF, En la distribución de Weibull, la CDF (Cumulative Distribution Function, o Función de Distribución Acumulada) es la fórmula que calcula la probabilidad de que un componente o producto falle en o antes de un tiempo determinado


3. Trazar la PDF, conociendo alpha y beta.
>>from reliability.Distributions import Weibull_Distribution
>>import matplotlib.pyplot as plt

>>dist = Weibull_Distribution(alpha=94.382, beta=1.257)  # this created the distribution object
>>dist.PDF()  # this creates the plot of the PDF
>>plt.show()

En el análisis de Weibull, PDF significa Función de Densidad de Probabilidad (Probability Density Function en inglés), Es una fórmula matemática que describe la probabilidad de que una pieza, componente o sistema falle en un momento exacto del tiempo (t). A diferencia de la función acumulada, la PDF muestra la tasa o concentración de fallas en un instante específico.

Además ya teniendo la pdf podemos trazar las demás funciones de probabilidad relacionadas.

4. Trazar las demás funciones de distribución.

>>dist.plot()


SF significa Survival Function (Función de Supervivencia).También se le conoce comúnmente como Función de Fiabilidad (R(t)) y representa la probabilidad de que un elemento u organismo sobreviva más allá de un tiempo determinado (t).
HF suele referirse a la Hazard Function (Función de Riesgo o Tasa de Fallos en español).La función de riesgo h(t) describe la probabilidad instantánea de que un componente falle en un momento exacto t, dado que ha sobrevivido hasta ese momento.
En el contexto del análisis de confiabilidad e ingeniería de mantenimiento, CHF son las siglas en inglés para Cumulative Hazard Function (Función de Riesgo Acumulado o Función de Tasa de Fallas Acumulada). Representa la acumulación del riesgo de falla que experimenta un componente o equipo a lo largo del tiempo hasta un momento determinado.

5. trazar el grafico 3D de los valores de probabilidad.

Gráfico de la Superficie 3D de Log-Verosimilitud (Datos: 15, 34, 56, 67, 118, 234)
Calculamos y graficamos la verosimilitud conjunta para los parámetros de Weibull de este conjunto de datos específico.

>>import matplotlib.pyplot as plt
>>from scipy.stats import weibull_min

>># Datos solicitados por el usuario
>>datos_usuario = [15, 34, 56, 67, 118, 234]

>># Generar un rango de exploración alrededor de los parámetros óptimos (Alpha ~ 94.38, Beta ~ 1.25)
>>alphas_u = np.linspace(40, 180, 100)
>>betas_u = np.linspace(0.4, 2.5, 100)
>>A_u, B_u = np.meshgrid(alphas_u, betas_u)

>># Calcular la Log-Verosimilitud
>>Z_u = np.zeros_like(A_u)
>>for i in range(len(betas_u)):
>>    for j in range(len(alphas_u)):
>>        Z_u[i, j] = np.sum(weibull_min.logpdf(datos_usuario, c=B_u[i, j], scale=A_u[i, j]))

>># Graficar en 3D
>>fig = plt.figure(figsize=(12, 8))
>>ax = fig.add_subplot(111, projection='3d')
>>surf = ax.plot_surface(A_u, B_u, Z_u, cmap='plasma', edgecolor='none', alpha=0.9)

>># Ajustar etiquetas y diseño
>>ax.set_title('Superficie 3D de Log-Verosimilitud (Datos de Falla)', fontsize=14, fontweight='bold')
>>ax.set_xlabel('Parámetro de Escala (Alpha / η)')
>>ax.set_ylabel('Parámetro de Forma (Beta / β)')
>>ax.set_zlabel('Log-Likelihood')
>>fig.colorbar(surf, ax=ax, shrink=0.5, aspect=10, label='Log-Likelihood')

>># Destacar el punto óptimo (MLE)
>># De los fits anteriores sabemos: Alpha = 94.38, Beta = 1.25, Max Log-Likelihood ~ -32.58
>>ax.scatter(94.38, 1.25, -32.58, color='red', s=100, label='Máximo MLE (94.38, 1.25)', depthshade=False)
>>ax.legend()

>>plt.show()


lunes, 28 de septiembre de 2026

¿Existen herramientas para RCA (Root Cause Analysis) en Python?

Fuente: Gemini IA. 

Sí, existen librerías especializadas en Python para realizar análisis de causa raíz (Root Cause Analysis o RCA), especialmente enfocadas en aprendizaje automático causal, inferencia y análisis de datos complejos. [1, 2, 3]

Las principales librerías que puedes utilizar son:
  • PyRCA: Una librería de código abierto desarrollada por Salesforce específicamente para el análisis de causa raíz en Inteligencia Artificial y sistemas (AIOps). Soporta múltiples métodos como inferencia bayesiana, paseos aleatorios (Random Walk), pruebas de hipótesis y ε-Diagnóstico. [1, 4, 5]
  • DoWhy: Desarrollada dentro del ecosistema de PyWhy (con fuerte apoyo de Amazon), es una biblioteca enfocada en el aprendizaje automático causal. Permite modelar explícitamente supuestos causales y estimar efectos causales para identificar la raíz de un problema. [2, 6]
  • Causallib: Paquete desarrollado por IBM para el análisis causal que se integra de forma unificada con la API de Scikit-Learn, facilitando la estimación de efectos y el modelado predictivo. [7]
  • PyCelonis: Si trabajas con minería de procesos (process mining), incluye módulos específicos de análisis de causa raíz para detectar comportamientos indeseados en los flujos de datos empresariales. [3]
Si te interesa, dime:
  • ¿Qué tipo de datos o problema quieres analizar (métricas de servidores/AIOps, procesos de negocio o datos clínicos/sociales)?
  • ¿Prefieres un enfoque basado en estadística tradicional/inferencia bayesiana o en machine learning?
Te puedo recomendar la opción más adecuada y un ejemplo básico de código.

Entradas recientes

IA, Hugging Face, Aplicada a la ingeniería mecánica

Prompt for Gemini: ¿Cómo puedo aprovechar Hugging face desde Python? indícame ejemplos resueltos de aplicación relacionada con ingeniería m...

Entradas Populares