PyLWL is an open-source Python library that provides a unified, extensible, and user-friendly implementation of Locally Weighted Learning (LWL) algorithms for supervised learning. It implements differentiable and gradient-descent-based local models for both classification and regression tasks.
- 📌 GdLwClassifier: Local weighted classifier using logistic regression with support for binary and multiclass classification.
- 📌 GdLwRegressor: Local weighted regressor using linear regression optimized with MSE loss.
- 📌 LwClassifier and LwRegressor: Local weighted classifier/regressor with a fixed kernel.
- 🧠 Supports any differentiable kernel function (e.g., Gaussian, Epanechnikov).
- ⚙️ Built with PyTorch, and fully compatible with Scikit-Learn pipeline and metrics.
- 🔧 Configurable optimizer (
Adam,SGD, etc.) and hyperparameters. - 🔍 Built-in support for model evaluation and scoring.
Please include these citations if you plan to use this library:
@software{thieu20250517PyLWL,
author = {Nguyen Van Thieu},
title = {PyLWL: A Python Framework for Locally Weighted Learning},
month = June,
year = 2025,
doi = {10.6084/m9.figshare.29089784},
url = {https://github.com/thieu1995/PyLWL}
}Install the latest version from PyPI:
pip install pylwlVerify installation:
$ python
>>> import pylwl
>>> pylwl.__version__from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from pylwl import LwClassifier
# Load data
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
# Train LVQ1 model
model = LwClassifier(kernel="gaussian", tau=1.0)
model.fit(X_train, y_train)
# Evaluate
y_pred = model.predict(X_test)
print("Accuracy:", model.score(X_test, y_test))from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from pylwl import LwRegressor
X, y = fetch_california_housing(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
reg = LwRegressor(kernel='gaussian', tau=1.0)
reg.fit(X_train, y_train)
print("R2 score:", reg.score(X_test, y_test))Please read the examples folder for more use cases.
Documentation is available at: 👉 https://pylwl.readthedocs.io
You can build the documentation locally:
cd docs
make htmlYou can run unit tests using:
pytest tests/We welcome contributions to PyLWL! If you have suggestions, improvements, or bug fixes, feel free to fork
the repository, create a pull request, or open an issue.
This project is licensed under the GPLv3 License. See the LICENSE file for more details.
- 🔗 Official source code repository
- 📘 Official document
- 📦 Download releases
- 🐞 Issue tracker
- 📝 Notable changes log
- 💬 Official discussion group
Developed by: Thieu @ 2025