Python package for domain adaptation in multivariate regression
Project description
diPLSlib: A Python library for domain adaptation in multivariate calibration
diPLSlib has been created to build privacy-preserving regression models and to perform calibration model maintenance by domain adaptation. It has a scikit-learn compatible API and features following methods:
- (Multiple) Domain-invariant partial least squares regression (di-PLS/mdi-PLS)
- Graph-based calibration transfer (GCT-PLS)
- $(\epsilon, \delta)$-differentially private partial least squares regression (edPLS)
Citation: If you use this library in your research, please cite the following reference:
Nikzad-Langerodi R.(2024). diPLSlib : A Python library for domain adaptation in multivariate calibration (version 2.4.1). URL: https://di-pls.readthedocs.io/
or in Bibtex format :
@misc{nikzad2024diPLSlib,
author = {Nikzad-Langerodi, Ramin},
month = {12},
title = {diPLSlib: A Python library for domain adaptation in multivariate calibration},
url = {https://di-pls.readthedocs.io/},
year = {2024}
}
Installation
pip install diPLSlib
Quick Start
How to apply di-PLS
Train regression model
from diPLSlib.models import DIPLS
from diPLSlib.utils import misc
l = 100000 # or l = (10000, 100) Regularization
m = DIPLS(A=2, l=l)
m.fit(X, y, X_source, X_target)
# Typically X=X_source and y are the corresponding response values
Apply the model
yhat_dipls = m.predict(X_test)
err = misc.rmse(y_test, yhat_dipls)
How to apply mdi-PLS
from diPLSlib.models import DIPLS
l = 100000 # or l = (5, 100, 1000) Regularization
m = DIPLS(A=3, l=l, target_domain=2)
m.fit(X, y, X_source, X_target)
# X_target = [X1, X2, ... , Xk] is a list of target domain data
# The parameter target_domain specifies for which domain the model should be trained (here X2).
How to apply GCT-PLS
from diPLSlib.models import GCTPLS
# Training
l = 10 # or l = (10, 10) Regularization
m = GCTPLS(A=2, l=l)
m.fit(X, y, X_source, X_target)
# X_source and X_target hold the same samples measured in the source and target domain, respectively.
How to apply EDPLS
from diPLSlib.models import EDPLS
# Training
epsilon = 1 # Privacy loss
delta = 0.05 # Failure probability of the privacy guarantee
m = EDPLS(A=2, epsilon=epsilon, delta=delta)
m.fit(X, y)
Examples
For more examples, please refer to the Notebooks:
- Domain adaptation with di-PLS
- Including multiple domains (mdi-PLS)
- Implicit calibration transfer with GCT-PLS
- Model selection with
scikit-learn - Privacy-preserving regression with EDPLS
Documentation
The documentation can be found here.
Acknowledgements
The first version of di-PLS was developed by Ramin Nikzad-Langerodi, Werner Zellinger, Edwin Lughofer, Bernhard Moser and Susanne Saminger-Platz and published in:
- Ramin Nikzad-Langerodi, Werner Zellinger, Edwin Lughofer, and Susanne Saminger-Platz Analytical Chemistry 2018 90 (11), 6693-6701 https://doi.org/10.1021/acs.analchem.8b00498
Further refinements to the initial algorithm were published in:
-
R. Nikzad-Langerodi, W. Zellinger, S. Saminger-Platz and B. Moser, "Domain-Invariant Regression Under Beer-Lambert's Law," 2019 18th IEEE International Conference On Machine Learning And Applications (ICMLA), Boca Raton, FL, USA, 2019, pp. 581-586, https://doi.org/10.1109/ICMLA.2019.00108.
-
Ramin Nikzad-Langerodi, Werner Zellinger, Susanne Saminger-Platz, Bernhard A. Moser, Domain adaptation for regression under Beer–Lambert’s law, Knowledge-Based Systems, Volume 210, 2020, https://doi.org/10.1016/j.knosys.2020.106447.
-
Bianca Mikulasek, Valeria Fonseca Diaz, David Gabauer, Christoph Herwig, Ramin Nikzad-Langerodi, "Partial least squares regression with multiple domains" Journal of Chemometrics 2023 37 (5), e3477, https://doi.org/10.13140/RG.2.2.23750.75845
-
Ramin Nikzad-Langerodi & Florian Sobieczky (2021). Graph‐based calibration transfer. Journal of Chemometrics, 35(4), e3319. https://doi.org/10.1002/cem.3319
-
Ramin Nikzad-Langerodi, Mohit Kumar, Du Nguyen Duy, and Mahtab Alghasi (2024), "(epsilon, delta)-Differentially Private Partial Least Squares Regression", unpublished.
Contact us
Bottleneck Analytics GmbH
info@bottleneck-analytics.com
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 Distributions
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file diPLSlib-2.4.2-py3-none-any.whl.
File metadata
- Download URL: diPLSlib-2.4.2-py3-none-any.whl
- Upload date:
- Size: 32.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f72c1980ed613a9614549b1ade159b0e8c3031972bf8dad67f5deaee4046bbd3
|
|
| MD5 |
8bd6dd7f171d951f9fc0432d2d268bee
|
|
| BLAKE2b-256 |
6f4f9f89635bcd080858afb04e4af4a40a63f18cbb2ca5d06a804756e2c8d27d
|