Non-Intrusive Load Monitoring (NILM) is the process of estimating the energy consumed by individual appliances given just a whole-house power meter reading. In other words, it produces an (estimated) itemised energy bill from just a single, whole-house power meter.
NILMTK is a toolkit designed to help researchers evaluate the accuracy of NILM algorithms. If you are a new Python user, it is recommended to educate yourself on Pandas, Pytables and other tools from the Python ecosystem.
⚠️It may take time for the NILMTK authors to get back to you regarding queries/issues. However, you are more than welcome to propose changes, support! Remember to check existing issue tickets, especially the open ones.
This Python package uses uv for installation. uv is a fast and modern Python package manager that replaces tools like pip and virtualenv, with support for pyproject.toml and ultra-fast dependency resolution.
To install NILMTK, first install uv and then run:
uv pip install git+https://github.com/nilmtk/nilmtk.git
To use the deddiag dataset, install the optional dependency with:
uv pip install "nilmtk[deddiag] @ git+https://github.com/nilmtk/nilmtk
Docker is an open-source platform for developing, shipping, and running applications in lightweight, portable containers that bundle code, runtime, libraries, and system tools into a single package. It ensures everyone runs the same environment, regardless of host OS, and keeps NILMTK’s dependencies contained without polluting the system Python.
Build and run locally
docker build -t nilmtk-uv .
docker run --rm -it nilmtk-uv bash
Pull the pre-built image
docker pull ghcr.io/enfuego27826/nilmtk:latest
docker run --rm -it ghcr.io/enfuego27826/nilmtk:latest bash
It came to our attention that some users follow third-party tutorials to install NILMTK. Always remember to check the dates of such tutorials, many are very outdated and don't reflect NILMTK's current version or the recommended/supported setup.
We quote our NILMTK paper explaining the need for a NILM toolkit:
Empirically comparing disaggregation algorithms is currently virtually impossible. This is due to the different data sets used, the lack of reference implementations of these algorithms and the variety of accuracy metrics employed.
To address this challenge, we present the Non-intrusive Load Monitoring Toolkit (NILMTK); an open source toolkit designed specifically to enable the comparison of energy disaggregation algorithms in a reproducible manner. This work is the first research to compare multiple disaggregation approaches across multiple publicly available data sets. NILMTK includes:
If you use NILMTK in academic work then please consider citing our papers. Here are some of the publications (contributors, please update this as required):
Please note that NILMTK has evolved a lot since most of these papers were published! Please use the online docs as a guide to the current API.
For more detail, please see our changelog.
(top 30 of 37)
Python
91.8%
Jupyter Notebook
7.8%
Non-Intrusive Load Monitoring (NILM) is the process of estimating the energy consumed by individual appliances given just a whole-house power meter reading. In other words, it produces an (estimated) itemised energy bill from just a single, whole-house power meter.
NILMTK is a toolkit designed to help researchers evaluate the accuracy of NILM algorithms. If you are a new Python user, it is recommended to educate yourself on Pandas, Pytables and other tools from the Python ecosystem.
⚠️It may take time for the NILMTK authors to get back to you regarding queries/issues. However, you are more than welcome to propose changes, support! Remember to check existing issue tickets, especially the open ones.
This Python package uses uv for installation. uv is a fast and modern Python package manager that replaces tools like pip and virtualenv, with support for pyproject.toml and ultra-fast dependency resolution.
To install NILMTK, first install uv and then run:
uv pip install git+https://github.com/nilmtk/nilmtk.git
To use the deddiag dataset, install the optional dependency with:
uv pip install "nilmtk[deddiag] @ git+https://github.com/nilmtk/nilmtk
Docker is an open-source platform for developing, shipping, and running applications in lightweight, portable containers that bundle code, runtime, libraries, and system tools into a single package. It ensures everyone runs the same environment, regardless of host OS, and keeps NILMTK’s dependencies contained without polluting the system Python.
Build and run locally
docker build -t nilmtk-uv .
docker run --rm -it nilmtk-uv bash
Pull the pre-built image
docker pull ghcr.io/enfuego27826/nilmtk:latest
docker run --rm -it ghcr.io/enfuego27826/nilmtk:latest bash
It came to our attention that some users follow third-party tutorials to install NILMTK. Always remember to check the dates of such tutorials, many are very outdated and don't reflect NILMTK's current version or the recommended/supported setup.
We quote our NILMTK paper explaining the need for a NILM toolkit:
Empirically comparing disaggregation algorithms is currently virtually impossible. This is due to the different data sets used, the lack of reference implementations of these algorithms and the variety of accuracy metrics employed.
To address this challenge, we present the Non-intrusive Load Monitoring Toolkit (NILMTK); an open source toolkit designed specifically to enable the comparison of energy disaggregation algorithms in a reproducible manner. This work is the first research to compare multiple disaggregation approaches across multiple publicly available data sets. NILMTK includes:
If you use NILMTK in academic work then please consider citing our papers. Here are some of the publications (contributors, please update this as required):
Please note that NILMTK has evolved a lot since most of these papers were published! Please use the online docs as a guide to the current API.
For more detail, please see our changelog.
(top 30 of 37)
Python
91.8%
Jupyter Notebook
7.8%