Instalación desde cero de nilmtk en Ubuntu


El NILM o Non-Intrusive Load Monitoring es una técnica computacional para la estimación del consumo individual de diversos dispositivos utilizando para ello la lectura agregada de un único medidor de energía (Smart Meter, SM) . NILMTK es un kit de herramientas de código abierto para el monitoreo de carga no intrusivo (Non-Intrusive Load Monitoring) muy usada en investigación ya que nos permite usando las mismas metricas comparar el rendimiento de difrentes algoritmos para el NILM.

En este post, instalaremos la versión de usuario de NILMTK concretamente en una instalación limpia de Ubuntu, aunque realmente también podria ser útil en sistemas Mac OS y otras distribuciones de Linux. Igualmente el procedimiento de instalación para Windows puede diferir del que se presenta en esta entrada de blog.

Anaconda es una distribución libre y abierta de los lenguajes Python y R, utilizada en ciencia de datos y aprendizaje automático (machine learning). Esto incluye procesamiento de grandes volúmenes de información, análisis predictivo y cómputos científicos . Tiene como ventaja simplificar la gestión e implementación de paquetes  de modo que la instalación de NILMTK se hará por medio de Conda.

Conda es el administrador de paquetes y Anaconda es una distribución que incluye alrededor de cien paquetes que incluyen conda, numpy, scipy, ipython notebook, etc. Conda se opera desde una consola de comandos integrada en Anaconda 2.

En cuanto a la diferencia entre “conda” y “Conda”, no hay ninguna. Son el mismo término y se refieren al mismo administrador de paquetes.


Este post se basa en el material proporcionado por el proyecto NILMTK:

Paso 1: Descargar e instalar Conda

Los entornos virtuales hacen que organizar paquetes de Python sea pan comido. Además, el proyecto NILMTK ofrece varias versiones sobre conda-forge.

Primero, desde el propio navegador consiga el software de Anaconda aquí: https://www.anaconda.com/ ( observe que según el sistema operativo se descargara automáticamente una versión diferente).

Normalmente el fichero de instalación se descargará en la carpeta de Descargas ( ocupa unos 738MB en el momento de escribir este post), así que nos iremos a la carpeta de Descargas y lo ejecutaremos con el comandos bash, para lo cual abriremos una ventana de terminal e iniciaremos la instalación desde la línea de comandos:

cd Descargas/
bash Anaconda3-2022.10-Linux-x86_64.sh 

Se le guiará a través de varios pasos así que ponga atención, primero aceptando la licencia (escribiendo «yes») y luego confirmando la instalación en la carpeta donde se instalará (por defecto se realizará en /home/usuario/anaconda3) pulsando «Enter». Finalmente tras unos 10 minutos nos preguntara si deseamos inizializar Anaconda 3 ejecutando conda init(contestaremos «yes»)

Una vez concluida la instalación de Conda, cerraremos el terminal y nos volvermos abrir una nueva ventana donde deberíamos probar la instalación ejecutando el comando conda en el símbolo del sistema:

conda

Si todo ha ido bien debe responder con los parámetros y opciones que son posibles desde linea de comandos:

usage: conda-script.py [-h] [-V] command ...

conda is a tool for managing and deploying applications, environments and packages.

Options:

positional arguments:
  command
    clean        Remove unused packages and caches.
    compare      Compare packages between conda environments.
    config       Modify configuration values in .condarc. This is modeled after the git config command. Writes to the
                 user .condarc file (C:\Users\carlo\.condarc) by default.
    create       Create a new conda environment from a list of specified packages.
    help         Displays a list of available conda commands and their help strings.
    info         Display information about current conda install.
    init         Initialize conda for shell interaction. [Experimental]
    install      Installs a list of packages into a specified conda environment.
    list         List linked packages in a conda environment.
    package      Low-level conda package utility. (EXPERIMENTAL)
    remove       Remove a list of packages from a specified conda environment.
    uninstall    Alias for conda remove.
    run          Run an executable in a conda environment. [Experimental]
    search       Search for packages and display associated information. The input is a MatchSpec, a query language
                 for conda packages. See examples below.
    update       Updates conda packages to the latest compatible version.
    upgrade      Alias for conda update.

optional arguments:
  -h, --help     Show this help message and exit.
  -V, --version  Show the conda version number and exit.

conda commands available from other packages:
  build
  content-trust
  convert
  debug
  develop
  env
  index
  inspect
  metapackage
  render
  repo
  server
  skeleton
  token
  verify

Asimismo debería estar disponible el entorno de Jupyter, para lo cual escribiremos desde la línea de comandos del terminal:

jupyter notebook

Esto nos abrirá una ventana de navegador en el navegador por defecto en localhost:8888/tree y podremos acceder a los cuadernos de jupyter notebook que tengamos en el disco.

NOTA :En caso de que el comando conda resulte en «un error de intérprete incorrecto» (es decir, no hay tal error de archivo o directorio), aplique la siguiente corrección:

cd /inicio/usuario/
nano .bashrc

Agregue la línea:

export PATH=~/anaconda3/bin:$PATH

Guarde los cambios en el archivo .bashrc y, finalmente, ejecute el comando:

source .bashrc

Felicidades, acaba de instalar Conda.

Paso 2: Instalación de NILMTK


Abra una ventana de terminal, cree un nuevo entorno Conda y actívelo:

conda create --name nilmtk-env
conda activate nilmtk-env

Si aún no está presente en la instalación de Conda, agregue conda-forge a la lista de canales:

conda config --add channels conda-forge

Dado que la instalación de NILMTK puede dar problemas con NILMTK y Matplotlib. Para solucionarlos, aplique el comando:

conda install matplotlib=3.3.2

Igualmente previa a la instalación, puede instalar Pandas para evitar problemas posteriores.

conda install pandas

Finalmente, instale la última versión de NILMTK de conda-forge. Observe que el signo igual no lleva espacios (piense que estamos usando Python) .

conda install -c nilmtk nilmtk=0.4.3


Esto puede llevar un tiempo. Mientras tanto, eche un vistazo a otros paquetes en Forge de NILMTK.

POSIBLES ERRORES:

Si falla en el ultimo punto de instalación siguiendo la anterior «guia oficial», incluso tanto windows como apple en ninguna de las versiones (hay personas que han probado 0.4.1,0.4.2. y 0.4.3), puede que tengamos que instalar manualmente siguiendo el procedimiento siguient, donde ya no es necesario crear un entorno virtual:

Desde el repositorio nilmtk en anaconda (https://anaconda.org/nilmtk/repo ) descargar los archivos .tar.bz2 para su arquitectura tanto para el paquete de metadatos nilm (https://anaconda.org/nilmtk/nilm_metadata/files) como para el paquete nilmtk (https://anaconda.org/nilmtk/nilmtk/files)

Luego, ejecute conda desde el directorio home los comandos install nilmtk-X.X.X-py_0.tar.bz2 y conda install nilm_metadata-X.X.X.tar.bz2 con las X como el número de versión del paquete que quiere instalar.

Obsérvese que para NILMTK se han retirado las versiones 0.4.2 y 0.4.1 y solo se mantiene la actual (0.4.3) y la 0.3.2.

Para los metadatos debemos observar esta vez el SO donde lo vamos a instalar:

Una vez instalados ambos paquetes, dado que al intentar ejecutar nilmtk nos acosejan desde el foro instalar el desde el git el paquete nilm_metadata , para lo cual primero deberemos instalar el git ( si no esta instalado). Para instalar Git en Ubuntu, puede usar la línea de comandos y seguir estos pasos:

  • Abre una ventana de terminal (puedes abrir una ventana de terminal presionando Ctrl + Alt + T en su teclado).
  • Actualiza la lista de paquetes ejecutando el siguiente comando para actualizar la lista de paquetes: sudo apt-get update
  • Instale Git una vez que se haya actualizado la lista de paquetes, ejecutando el siguiente comando para instalar Git: sudo apt-get install git
  • Este comando descargará e instalará la última versión de Git en tu sistema.
  • Verifique la instalación para comprobar que Git se ha instalado correctamente, ejecute el siguiente comando:git –version
  • Este comando debería imprimir el número de versión de Git instalado en tu sistema

Ya podemos instalar el repositorio nilm_metadata con el git, pero tenga en cuenta que la versión de Python debe ser exactamente la 3.8o la 3.9 . Además, tienes que instalar nilmtk-metadata de la siguiente manera para lo cual ejecute el siguiente comando:

pip install git+https://github.com/nilmtk/[email protected]

Paso 3: Agregar un kernel de Jupyter

Básicamente, NILMTK ahora está instalado en su ordenador, para lo cual puede comprobar que todo esta en su lugar con el siguiente comando.

(nilmtk-env) C:\Users\carlo>conda  list nilmtk

# packages in environment at C:\Users\carlo\anaconda3\envs\nilmtk-env:
#
# Name                    Version                   Build  Channel
nilmtk                    0.4.3                      py_0    nilmtk

El siguiente paso implica cuadernos de Jupyter. Trabajar con Jupyter abre muchas posibilidades y se dice que es una herramienta imprescindible. Por lo tanto, agregue el entorno NILMTK a Jupyter:

python -m ipykernel install --user --name nilmtk-env --display-name "Python (nilmtk-env)"

Ha llegado el momento de comprobar su instalación. Antes que nada, cree una nueva carpeta y descargue el conjunto de pruebas aleatorias de Github:

mkdir nilmtk_test/
cd nilmtk_test/
wget https://raw.githubusercontent.com/nilmtk/nilmtk/master/data/random.h5

A continuación, arranque Jupyter:

jupyter notebook

Para probar la instalación, intente importar el conjunto de datos aleatorio con NILMTK y trace todos los medidores:

El resultado debe ser:

MeterGroup(metros=
ElecMeter(instance=1, building=1, dataset=None, appliances=[])
ElecMeter(instance=2, building=1, dataset=None, appliances=[])
ElecMeter(instance=3, building=1, dataset=None, appliances=[])
ElecMeter(instance=4, building=1, dataset=None, appliances=[])
ElecMeter(instance=5, building=1, dataset=None, appliances=[])
)

¡Felicidades! Lo ha logrado. ¡NILMTK parece funcionar según lo previsto!

Anuncio publicitario

Deja una respuesta

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.