Skip to main content

PyLWL: A Python Framework for Locally Weighted Learning

GitHub release PyPI version PyPI - Python Version PyPI - Downloads Downloads Tests & Publishes to PyPI Documentation Status Chat DOI License: GPL v3


📌 Overview

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.

Features

  • 📌 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.

📖 Citation Request

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}
}

📦 Installation

Install the latest version from PyPI:

pip install pylwl

Verify installation:

$ python
>>> import pylwl
>>> pylwl.__version__

🚀 Quick Start

Classification

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))

Regression

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

Documentation is available at: 👉 https://pylwl.readthedocs.io

You can build the documentation locally:

cd docs
make html

🧪 Testing

You can run unit tests using:

pytest tests/

🤝 Contributing

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.

📄 License

This project is licensed under the GPLv3 License. See the LICENSE file for more details.

📎 Official channels


Developed by: Thieu @ 2025

Metadata

Release files for pylwl 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pylwl 0.2.0
File Size Uploaded
pylwl-0.2.0.tar.gz 36.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pylwl 0.2.0
File Interpreter ABI Platform
pylwl-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 70.7 kB

Release files / pylwl-0.2.0.tar.gz

Download URL pylwl-0.2.0.tar.gz
Size 36.2 kB
Tags Source
SHA-256 checksum
How to use checksums
9b04484dce4c76d16fb77d4a985e05ace38501b4a1defd91307bdb76f6f63bd7
BLAKE2b-256 checksum
How to use checksums
130a0b4a9390ab6fa369ac3e4ec78da3b992effff6f77f39300aa3f95d90a758
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 5, 2025.

Transparency log

Release files / pylwl-0.2.0-py3-none-any.whl

Download URL pylwl-0.2.0-py3-none-any.whl
Size 34.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4269c2b78f13390363961c487d3713ca3a2f450609cc48a19b59c8fe9899384e
BLAKE2b-256 checksum
How to use checksums
52031b14e269d05cab4aea700fb0b426f3c831e380e165cb39ad1591bec32cae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.12.9

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jun 5, 2025.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page