En este blog hemos hablado en muchísimas ocasiones del paquete NILMTK, el famoso paquete open software para implementar la desagregacion de la energia .NILMTK es un toolkit de código abierto para Non-Intrusive Load Monitoring (NILM), cuya utilidad principal es desagregar el consumo eléctrico de una vivienda en los diferentes electrodomésticos usando solo la lectura de un medidor general. ¿Qué significa esto?
NILM (Non-Intrusive Load Monitoring): Técnica que estima cuánta energía consume cada aparato sin necesidad de instalar sensores individuales en cada uno.
NILMTK (Toolkit): Es una biblioteca en Python que ofrece algoritmos, datasets y herramientas para investigar, probar y comparar métodos de desagregación energética.
Utilidad práctica
Investigación en Smart Grids: Permite estudiar hábitos de consumo eléctrico sin desplegar muchos medidores.
Eficiencia energética: Ayuda a identificar qué aparatos consumen más y cuándo, facilitando estrategias de ahorro.
Aplicaciones comerciales: Puede generar facturas detalladas a partir de un único medidor, útil para compañías eléctricas o proyectos de domótica.
Desarrollo académico: Es usado en universidades y centros de investigación para probar nuevos algoritmos de machine learning aplicados al consumo energético.
NILMTK convierte una sola lectura de energía en información detallada por aparato, lo que lo hace valioso para investigación, eficiencia y gestión energética. Todo esto esta muy bien ….pero instalar NILMTK y nilmtk-contrib en Windows 11 puede convertirse en una tarea complicada debido a incompatibilidades de versiones de Python y dependencias antiguas usadas por las librerías. Si bien la opción inicial recomendada suele ser crear un entorno conda con Python 3.7, con frecuencia surgen problemas al manejar las versiones correctas de dependencias como numpy y pandas , por eso otro camino puede ser usar WSL ,el cual vamos a explorar en este post, pero antes veamos los problemas a los qeu nos enfrentamos con la instalación clásica con la herramienta Conda/miniconda.
No obstante, se presentan errores como LibMambaUnsatisfiableError porque la dependencia hmmlearn no está disponible en el canal nilmtk. Agregar el canal conda-forge y combinar instalaciones con conda y pip es la solución habitual:
Sin embargo, incluso con estos ajustes, la instalación en Windows puede ser inestable. Además, NILMTK no está oficialmente publicado en PyPI, por lo que la instalación desde código fuente usando pip es habitual, lo que puede generar otras complicaciones relacionadas con versiones de Python y dependencias de construcción como hatchling.
La solución definitiva: usar WSL con pyenv y Python 3.11.5
La forma más estable es instalar NILMTK dentro de WSL (Windows Subsystem for Linux), usando pyenv para gestionar una versión compatible de Python, concretamente la 3.11.5. Esto permite:
Evitar conflictos de versiones de dependencias antiguas.
Usar la infraestructura Linux más compatible para herramientas científicas.
Integrar sin problemas con Visual Studio Code y Jupyter.
Pasos clave para esta instalación en WSL
Prepara WSL con las dependencias básicas para compilar Python
Y en los notebooks selecciona el kernel "Python (nilmtk-env)".
Conclusión
Aunque instalar NILMTK y nilmtk-contrib en Windows 11 presenta numerosos retos por incompatibilidades de versiones y dependencias, usar WSL combinado con pyenv y Python 3.11.5 proporciona un entorno estable, funcional y que integra bien con VS Code y Jupyter.
Este es el método recomendado para investigadores y desarrolladores que buscan máxima compatibilidad y facilidad para trabajar con NILMTK en Windows.
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.
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
Verificar la instalación
Ejecutar el comando git --version
(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:
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_validation han 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:
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 bash y conexión a internet. No es necesario tener Anaconda.
# 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.7 y 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_entorno con 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:
Debe estar conectado para enviar un comentario.