Este excelente paquete en Python es uno de los proyectos de software abierto más reconocidos para la desagregación no intrusiva del consumo energético, conocida en inglés como NILM (Non-Intrusive Load Monitoring). Esta técnica permite estimar cuánta energía consume cada electrodoméstico en un hogar a partir de una única medición total en la entrada de energía.
NILMTK (Non-Intrusive Load Monitoring Toolkit) es una herramienta de código abierto diseñada para facilitar la investigación en este campo. Proporciona un marco completo para el procesamiento de datos, el entrenamiento y la evaluación de algoritmos de desagregación energética, además de incluir una colección de datasets y modelos base listos para usar.
Por su parte, nilmtk-contrib es un repositorio comunitario que amplía las capacidades de NILMTK. Permite incorporar nuevas funcionalidades, algoritmos de aprendizaje automático y técnicas de desagregación avanzadas desarrolladas por investigadores de todo el mundo. Dado que el desarrollo del repositorio principal de NILMTK ha sido más lento en los últimos años, nilmtk-contrib ofrece una vía activa para seguir evolucionando la herramienta sin depender exclusivamente de actualizaciones oficiales. A continuación destacamos algunas características de nilmtk-contrib:
- Nuevos Algoritmos de Desagregación
- Contiene implementaciones de modelos avanzados basados en redes neuronales, como Sequence-to-Sequence y Variational Autoencoders.
- Se han añadido métodos híbridos que combinan enfoques basados en descomposición de señales y aprendizaje profundo.
- Soporte para Nuevos Datasets
- Extiende la compatibilidad con bases de datos de consumo eléctrico no incluidas en NILMTK.
- Simplifica la conversión de datos desde formatos comunes como CSV a HDF5, que es el formato utilizado por NILMTK.
- Mayor Flexibilidad y Mantenibilidad
- Permite a los desarrolladores probar nuevas ideas sin modificar el código base del NILMTK original.
- Se puede instalar y utilizar junto con NILMTK sin conflictos.
Todo parece idílico si no fuera porque para instalar nilmtk-contrib correctamente, debes cumplir con los requisitos de versiones específicas de Python y dependencias.
Requisitos clave
| Paquete | Versión requerida | Compatibilidad con Python |
|---|---|---|
| NILMTK | >=0.4 | Python 3.7 (recomendado) |
| scikit-learn | >=0.21 | Python 3.5-3.7 |
| Keras | >=2.2.4 | Python 3.5+ |
| cvxpy | >=1.0.0 | Python >=3.7 (para cvxpy<=1.0.0) |
El problema de instalar todo lo anterior es que dada la gran evolución de los diferentes paquetes es bastante difícil encajar todas las piezas para la instalación vaya bien , y lo mas importante: que funcionen bien todos los algoritmos nuevos implementados en nilmtk-contrib, así que dado que un entorno Windows para este paquete no esta ASEGURADO su funcionalidad, vamos a probar en uno que si debería funcionar : UNIX , y para ello que mejor que probar bien en una maquina virtual o en una maquina física una distribución de Ubuntu 24.04.2 LTS . Sí, la instalación y funcionamiento de nilmtk-contrib suele ser mucho más estable y sencilla en Ubuntu (Linux) que en Windows. Esto se debe a varios motivos técnicos y a la experiencia de la comunidad.
Ventajas de Instalar NILMTK-Contrib en Ubuntu
Menos problemas con rutas y compiladores:Windows suele requerir Visual Studio Build Tools y ajustes de rutas, mientras que en Ubuntu todo suele funcionar con los compiladores y rutas estándar del sistema.
Compatibilidad de dependencias:La mayoría de las dependencias científicas (como numpy, pandas, matplotlib, h5py, scikit-learn, tensorflow, keras, etc.) están mejor soportadas y precompiladas para Linux, lo que reduce los errores de compilación y conflictos de versiones2456.
Instalación de paquetes del sistema:En Ubuntu puedes instalar fácilmente bibliotecas del sistema necesarias (como libhdf5-dev, libfreetype6-dev, etc.) con apt, mientras que en Windows suelen causar errores de compilación o falta de archivos como ft2build.h5.
Experiencia de la comunidad:La mayoría de los desarrolladores y usuarios avanzados de NILMTK y nilmtk-contrib trabajan y prueban en entornos Linux, por lo que los bugs y problemas se resuelven antes en Ubuntu que en Windows245.
Documentación y scripts oficiales:Las instrucciones oficiales y los archivos de entorno (environment-dev.yml) están pensados principalmente para Linux/Ubuntu245.

Instalación de Ubuntu
En realidad no es demasiado complejo instalar Ubuntu pues solo hay que descargar del sitio oficial https://releases.ubuntu.com/24.04.2/ubuntu-24.04.2-desktop-amd64.iso?_ga=2.174585895.429816511.1744651685-322453307.1744651685&_gl=1*wi4hmr*_gcl_au*MTk0NTU5NzYxLjE3NDQ2NTE2ODc. y después con la imagen ISO crear un USB arrancable con RUFUS (https://rufus.ie/es/#google_vignette)

Instalación comando git
Git es un sistema de control de versiones distribuido que permite a los desarrolladores hacer cambios en el código y revertirlos si es necesario. Para la instalacion de NILMTK y sus añadidos lo necesitaremos tener instalado en nuesto sistema. A continuación los pasos para instalar Git en Ubuntu:
- Actualizar el sistema operativo y sus paquetes
- Abrir la terminal
- Ejecutar el comando
sudo apt-get update - Ejecutar el comando
sudo apt-get upgrade
- Instalar Git
- Ejecutar el comando
sudo apt-get install git
- Ejecutar el comando
- Verificar la instalación
- Ejecutar el comando
git --version
- Ejecutar el comando
(la ultima es la 2.43.0)
Para configurar tu correo y tu nombre de usuario asociados a tu cuenta Git, puedes ejecutar los siguientes comandos en la terminal:
git config --global user.name "Tu nombre"git config --global user.email "[email protected]"

Instalación de nilmtk , nilmtk-contrib y nilm-metadata con conda
La instalación de NILMTK y sus módulos asociados en Ubuntu 24.04 puede ser problemática debido a incompatibilidades de versiones de Python y dependencias. Las guías oficiales y de la comunidad suelen estar desactualizadas o no consideran los cambios recientes en las versiones de Ubuntu y Conda. A continuación, se resumen los puntos clave y una guía actualizada para maximizar la probabilidad de éxito.
Resumen de los problemas más frecuentes
- Incompatibilidad de versiones de Python: NILMTK y nilmtk-contrib no funcionan con Python 3.10+; requieren Python 3.7, 3.8 o, con suerte, 3.924.
- Dependencias estrictas: Versiones específicas de numpy, pandas, h5py y scikit-learn son necesarias para evitar errores de importación o ejecución24.
- Errores de importación: A menudo, los módulos se instalan pero no se pueden importar debido a rutas incorrectas o instalaciones parciales1.
- Cambios en la API: Algunos ejemplos y scripts antiguos ya no funcionan porque módulos como
nilmtk.cross_validationhan sido eliminados2.
Perfecto, instalar NILMTK, nilmtk-contrib y nilm-metadata con conda requiere un poco de cuidado con las versiones. La instalación de nilmtk-contrib puede parecer sencilla con un comando como:
conda create -n nilm -c conda-forge -c nilmtk nilmtk-contrib
Pero en la práctica, eso no funciona bien con las versiones modernas de Python (como la que trae Ubuntu 24.04 por defecto). nilmtk-contrib depende de paquetes antiguos y no es compatible con Python >=3.8 sin arreglos importantes.
Requisitos previos: tener
bashy conexión a internet. No es necesario tener Anaconda.1. [OPCIONAL] Eliminar entorno anterior
nilmtk-envconda deactivate # por si estás dentro del entorno
conda env remove --name nilmtk-env
2. Limpiar cachés (conda y pip)
conda clean --all -y
pip cache purgeArchivo
nilmtk-env.ymlactualizadoname: nilmtk-env
channels:
- conda-forge
- nilmtk
dependencies:
- python=3.7
- pandas=1.1.5
- numpy=1.19.5
- matplotlib=3.1.3
- scikit-learn=0.22.2.post1
- h5py=2.10
- pytables=3.6.1
- networkx=2.5
- nilmtk=0.4.3
- pip
- pip:
- git+https://github.com/nilmtk/nilmtk-metadata.git
- git+https://github.com/nilmtk/nilmtk-contrib.git
📦 Pasos para usarlo
- Guarda el contenido en un archivo llamado
nilmtk-env.yml.- Ejecuta:
conda env create -f nilmtk-env.yml
conda activate nilmtk-envSI EL PRIMER COMANDO NO RESPONDE: Usar
condaconmamba(10–100× más rápido)
- Activa tu base:
conda activate base
- Instala
mamba(un reemplazo ultrarrápido del resolver deconda):conda install mamba -n base -c conda-forge -y
- Luego usa mamba en lugar de conda:
mamba env create -f nilmtk-env.ymlMamba usa el mismo entorno y
environment.yml, pero resuelve en segundos o minutos, no horas.
Con este entorno:
nilmtk=0.4.3se instala desde el canal oficial.- Se garantiza compatibilidad con
python=3.7y dependencias clave.- También quedan listos
nilmtk-metadataynilmtk-contrib.
9. Instalar Jupyter y registrar el kernel
pip install notebook ipykernel
python -m ipykernel install --user --name nilmtk-env --display-name "Python (nilmtk-env)"
🚀 Final
Ahora puedes ejecutar:
jupyter notebookY seleccionar el kernel: Python (nilmtk-env)
✅ 9. Verificar que todo esté funcionando
python -c "import nilmtk; import nilm_metadata; print('✅ NILMTK y metadata instalados correctamente')"
Cuando quieras, puedes lanzar Jupyter y comenzar a trabajar:
jupyter notebook
Si no hay errores, todo está bien.
Instalación en 3 pasos (sin conflictos)
🧼 1. Borrar el entorno anterior y limpiar
conda deactivate
conda env remove -n nilmtk-env
conda clean --all --yes
🧱 2. Crear entorno base compatible
conda create -n nilmtk-env python=3.7 numpy=1.19.5 pandas=1.1.5 matplotlib=3.1.3 scikit-learn=0.22.2.post1 h5py=2.10 pytables=3.6.1 networkx=2.5 pip -c conda-forge -y
conda activate nilmtk-env
🧠 3. Instalar NILMTK + metadata + contrib
# NILMTK oficial
conda install -c nilmtk nilmtk=0.4.3 -y
# NILMTK-METADATA y NILMTK-CONTRIB desde GitHub
pip install git+https://github.com/nilmtk/nilmtk-metadata.git
pip install git+https://github.com/nilmtk/nilmtk-contrib.git
🚀 Resultado
Este enfoque:
- Instala todo en orden, sin resolver millones de dependencias a la vez.
- Garantiza compatibilidad total con
python=3.7y NILMTK. - Evita errores tipo “pins” o conflictos irresolubles.

🔧 Miniconda vs conda
La recomendación oficial de «usar conda» es válida, pero Miniconda es simplemente una versión más ligera de Anaconda, y para muchos casos (como este) es incluso mejor. Aquí va una comparación rápida:
🔍 Miniconda vs Anaconda
| Característica | Anaconda | Miniconda |
|---|---|---|
| Tamaño inicial | ~3 GB | ~50 MB |
| Incluye paquetes | Sí (cientos) | No, solo conda + Python |
| Tiempo de instalación | Largo | Rápido |
| Flexibilidad | Menor (trae paquetes por defecto) | Mayor (instalas solo lo que necesitas) |
| Ideal para | Data science general | Casos específicos o entornos controlados (como NILMTK) |
⚠️ ¿Por qué evitar Anaconda en este caso?
Con Miniconda tienes control total del entorno, sin paquetes preinstalados que estorben.
Anaconda trae versiones más nuevas de muchas librerías que rompen NILMTK, como numpy, pandas, networkx, etc.
Instalar nilmtk-contrib encima de Anaconda puede causar conflictos de versiones difíciles de depurar.
Una vez que tienes Anaconda instalado correctamente en Ubuntu, puedes usar conda desde la terminal directamente. Aquí van los comandos más comunes:
🔎 Verifica que conda está instalado
conda --version
Deberías ver algo como: conda 24.1.2 (o la versión que tengas instalada).
⚙️ Comandos básicos de conda
✅ Crear un nuevo entorno:
conda create --name mi_entorno python=3.9
Reemplaza
mi_entornocon el nombre que prefieras y ajusta la versión de Python si lo necesitas.
✅ Activar un entorno:
conda activate mi_entorno
✅ Desactivar un entorno:
conda deactivate
✅ Ver entornos disponibles:
conda env list
✅ Instalar un paquete:
conda install numpy
✅ Eliminar un entorno:
conda remove --name mi_entorno --all
💡 Tip: Si te sale un error como conda: command not found
Es probable que no se haya añadido a tu .bashrc. Puedes forzarlo con:
export PATH="$HOME/anaconda3/bin:$PATH"
source ~/.bashrc
O, si usas Zsh, reemplaza .bashrc por .zshrc.
Para configurar tu correo y tu nombre de usuario asociados a tu cuenta Git, puedes ejecutar los siguientes comandos en la terminal:
git config --global user.name "Tu nombre"git config --global user.email "[email protected]"
Debe estar conectado para enviar un comentario.