Skip to main content

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
One-dimensional experiment Two-dimensional experiment

Contributing

We welcome contributions! Please follow these guidelines if you'd like to contribute to the project:

  1. Fork our GitHub repository and clone it to your local machine.
  2. Create a new branch for your feature or bug fix.
  3. Make your changes and ensure that tests pass.
  4. 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

non_param_score_est-1.0.0.tar.gz (18.6 kB view hashes)

Uploaded Source

Built Distribution

non_param_score_est-1.0.0-py3-none-any.whl (24.3 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page