Non parametric score function estimation library
Project description
Non-parametric score estimation
Welcome to the non_param_score_est
Python package (GitHub repository, PyPi library).
Usage
Initial setup
To install the package, you are required to have a Python 3.10 or newer environment. Then, simply run:
pip install non_param_score_est
Choosing the estimator
The following estimators are available (and the corresponding import names):
Estimator | Import Name |
---|---|
Tikhonov regularization | Tikhonov |
NKEF (with rate 0.75) | Tikhonov(subsample_rate=0.75) |
Kernel density estimator | KDE |
Landweber iteration | Landweber |
Nu-method | NuMethod |
Spectral Stein gradient estimator | SSGE |
Stein estimator | Stein |
Utilising the estimators
To use the estimators in your code, simply import the estimator and call the estimate_gradients_x_s
or estimate_gradients_s
function. For example, to utilise the Tikhonov estimator, you would write:
import numpy as np
from non_param_score_est.estimators import Tikhonov
samples = np.random.normal(1000)
est = Tikhonov(bandwidth=1., lam=1e-4)
#estimate the gradients of the generated samples
score_estimate = est.estimate_gradients_s(samples=samples)
#estimate the gradients of new query while fitting the score estimator to previously generated samples
new_query = np.random.normal(100)
new_estimate = est.estimate_gradients_s_x(queries=new_query, samples=samples)
Working with the estimators
A great way to further investigate how the estimators work is to check the plots.py file. It contains a script that generates plots of the estimators on a simple 1D and 2D examples. The plots are generated by running the following command:
from non_param_score_est.estimators import Tikhonov
from non_param_score_est.tests.plots import plotOneDim, plotTwoDim
# selecting Tikhonov regularization
est = Tikhonov(bandwidth=10., lam=1e-5)
# One-dimensional Gaussian distribution experiment
plotOneDim(estimator=est)
# Two-dimensional Gaussian distribution experiment
plotTwoDim(estimator=est)
These generate the following outputs:
One-dimensional experiment | Two-dimensional experiment |
---|---|
Contributing
We welcome contributions! Please follow these guidelines if you'd like to contribute to the project:
- Fork our GitHub repository and clone it to your local machine.
- Create a new branch for your feature or bug fix.
- Make your changes and ensure that tests pass.
- Submit a pull request with a clear title and description.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
The code in JAX was inspired by the repository of the Nonparametric Score Estimators paper, by Yuhao Zhou, Jiaxin Shi, Jun Zhu.
Contact
Krunoslav Lehman Pavasovic Email: krunolp@gmail.com GitHub: krunolp
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for non_param_score_est-1.0.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0f0a9323d94c2c7f02d929048bdbf4f3374261a90b21d944f4d650f11d91bd0e |
|
MD5 | 8aecb6ab3816f929d44c9855ed4f303c |
|
BLAKE2b-256 | b40c2fa422c9e1c81d8f105505b618f6305408993c43ec52d87541b494f09e9c |
Hashes for non_param_score_est-1.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1fd019e68092bd6e9fc0a371ec40f1d5dfbd19a31fe7ba9c260d0b007ef679bc |
|
MD5 | 1b76baf13081cae2b3f2a0a24c98211f |
|
BLAKE2b-256 | 5a174cb42220e4431af77758f3609f1283f6580d89bd0bbdd5ad2161efb52eec |