Recent Releases of differential-privacy-library
differential-privacy-library - Diffprivlib 0.6.5
This release of diffprivlib is a minor update to fix bugs that have resulted in the release of Numpy v2.0 and Scikit-Learn v1.5.
What's Changed
- [MNT] Prepare for Numpy 2.0 and Scikit-Learn 1.5 by @naoise-h in https://github.com/IBM/differential-privacy-library/pull/92
Full Changelog: https://github.com/IBM/differential-privacy-library/compare/0.6.4...0.6.5
- Python
Published by naoise-h over 1 year ago
differential-privacy-library - Diffprivlib 0.6.4
This release of diffprivlib is a minor update to fix a bug in some tools and to maintain compatibility with the newly-released Scikit-Learn v1.4.
Fixed
- Minor bugs arising from the relase of Scikit-Learn v1.4
- Incorrect bounds calculation in Nan-supporting statistical functions in the
toolsmodule (#87)
Added
- Support for Python 3.12
Merged Pull Requests
- [DOC] Updating documentation by @naoise-h in https://github.com/IBM/differential-privacy-library/pull/89
- [BUG] Fix bounds calculation in nanmean, etc. by @naoise-h in https://github.com/IBM/differential-privacy-library/pull/90
- [BUG] Fixes for scikit-learn v1.4 by @naoise-h in https://github.com/IBM/differential-privacy-library/pull/91
Full Changelog: https://github.com/IBM/differential-privacy-library/compare/0.6.3...0.6.4
- Python
Published by naoise-h about 2 years ago
differential-privacy-library - Diffprivlib 0.6.3
This release of diffprivlib is a minor update to maintain compatibility with the newly-released Scikit-Learn v1.3.
Fixed
- Bug in
DecisionTreeClassifierandRandomForestClassifierarising from the release of Scikit-Learn v1.3
Merged Pull Requests
- Update readme adding known publications by @stefano81 in https://github.com/IBM/differential-privacy-library/pull/78
- [BUG] Fixes
_Nodeclass for scikit-learn v1.3 by @naoise-h in https://github.com/IBM/differential-privacy-library/pull/86 - [BUG] Fix
random_statebug inquantileby @naoise-h in https://github.com/IBM/differential-privacy-library/pull/85
Full Changelog: https://github.com/IBM/differential-privacy-library/compare/0.6.2...0.6.3
- Python
Published by naoise-h over 2 years ago
differential-privacy-library - Diffprivlib 0.6.2
This release of diffprivlib is a minor update on 0.6.1 to maintain compatibility with the newly-released Scikit-learn 1.2, while also adding explicit support for Python 3.11.
Added
- Support for Python 3.11
Fixed
- Minor changes to support Scikit-learn's new parameter validation
- Minor changes to
PCAandRandomForestClassifierresulting from recent scikit-learn deprecations
Merged Pull Requests
- [MNT] Diffprivlib 0.6.2 by @naoise-h in https://github.com/IBM/differential-privacy-library/pull/77
Full Changelog: https://github.com/IBM/differential-privacy-library/compare/0.6.1...0.6.2
- Python
Published by naoise-h about 3 years ago
differential-privacy-library - Diffprivlib 0.6.1
This release is a minor bugfix to support the upcoming release of Numpy 1.24.0
Fixed
- Numpy's
histogramddhas deprecated thenormedkeyword, which has now been removed from diffprivlib.
Merged Pull Requests
- [MNT] diffprivlib 0.6.1 by @naoise-h in https://github.com/IBM/differential-privacy-library/pull/75
Full Changelog: https://github.com/IBM/differential-privacy-library/compare/0.6.0...0.6.1
- Python
Published by naoise-h about 3 years ago
differential-privacy-library - Diffprivlib 0.6.0
This version of diffprivlib supports Python versions 3.8 to 3.10.
Changed
Breaking:
* RandomForestClassifier has been substantially rewritten to fix previously-reported bugs and to improve performance. It now takes a bounds parameter (similar to other models) instead of the previous feature_domains parameter (#70)
Non-breaking:
* All diffprivlib models and tools now accept a random_state parameter to specify a seed for the random number generator (RNG), or to specify a RandomState instance to be used. The implementation follows closely that of scikit-learn, and more details can be found in the PR #72.
* To overcome difficulties with its installation on Windows, crlibm is now an optional dependency. (#67)
Merged Pull Requests
- [BUG] Making crlibm an optional dependency by @naoise-h in https://github.com/IBM/differential-privacy-library/pull/67
- [ENH] Refactor RandomForestClassifier by @naoise-h in https://github.com/IBM/differential-privacy-library/pull/70
- [ENH] Add random state support to diffprivlib by @naoise-h in https://github.com/IBM/differential-privacy-library/pull/72
- [MNT] Diffprivlib 0.6 by @naoise-h in https://github.com/IBM/differential-privacy-library/pull/74
Full Changelog: https://github.com/IBM/differential-privacy-library/compare/0.5.2...0.6.0
- Python
Published by naoise-h over 3 years ago
differential-privacy-library - Diffprivlib 0.5.2
This is a minor release of diffprivlib that adds the snapping mechanism and fixes bugs introduced by Scikit-learn 1.1.0.
Added
- Snapping mechanism,
Snapping(#46, by @danrr)
Fixed
- Bugs in
LinearRegression,LogisticRegressionandRandomForestClassifierintroduced by release of Scikit-learn 1.1.0 (#65)
New Contributors
- @danrr made their first contribution in https://github.com/IBM/differential-privacy-library/pull/46
Full Changelog: https://github.com/IBM/differential-privacy-library/compare/0.5.1...0.5.2
- Python
Published by naoise-h almost 4 years ago
differential-privacy-library - Diffprivlib 0.5.1
This release of diffprivlib is a minor update on 0.5, adding explicit support for Python 3.10.
Added
- Support for Python 3.10 (#61)
Full Changelog: https://github.com/IBM/differential-privacy-library/compare/0.5.0...0.5.1
- Python
Published by naoise-h about 4 years ago
differential-privacy-library - Diffprivlib 0.5.0
This release of diffprivlib features a number of additions, fixes and enhancements. This version of diffprivlib supports Python version 3.7 to 3.9.
Added
- A differentially private random forest classifier,
RandomForestClassifier, has been added to themodelsmodule (#41, by mismayil) - The
ExponentialandPermuteAndFlipmechanisms now supportmonotonicutility functions as an input parameter (08c4d98) - Templates have been added for issues and pull requests (#52, by stefano81)
- We are transitioning to Github Actions for tests and other checks (#54)
Changed
Breaking:
- Mirroring the equivalent behaviour in scikit-learn (since version 0.23), most parameters for diffprivlib models must now be specified as keyword arguments. Failing to do so will raise a TypeError. (5fa781e)
Non-breaking:
- The Laplace, Gaussian, Vector and Bingham distributions are now securely sampled to prevent privacy leakage due to their floating point representation (#47)
- Diffprivlib now requires scikit-learn 0.23, numpy 1.19, and scipy 1.5, or later (#51)
Fixed
- Bug in
quantilefor uniform data fixed (#43, d5ac459) - Optimised upper bound for
var(#45, by justanotherlad) - Bug in
Exponentialmechanism (#50, by justanotherlad) histogramddandhistogram2dnow prioritise bin edges frombinsoverrange. (96ef33c)
Removed
- The
Wishartmechanism has been removed (#42, eeae0d7)
- Python
Published by naoise-h over 4 years ago
differential-privacy-library - Diffprivlib 0.4.1
This release of diffprivlib is a minor update to v0.4 to fix a bug in models.LinearRegression.
Fixed
- Bug in
models.LinearRegressionwhich incorrectly calculated the sensitivity for the objective (#35)
- Python
Published by naoise-h about 5 years ago
differential-privacy-library - Diffprivlib 0.4.0
This release of diffprivlib includes a number of changes and additions to the existing codebase. A number of the changes may break existing code. This version of diffprivlib supports Python versions 3.6 to 3.8.
Added
ExponentialandPermuteAndFlipmechanisms for differentially private selection. The previous (categorical) exponential mechanism has now been renamedExponentialCategorical.Binghammechanism to produce a differentially private estimate of the first eigenvector of a covariance matrix.median,quantileandpercentilefunctions.
Changed
Breaking:
- The mechanisms module has been comprehensively refactored, with all mechanism parameters now being specified at initialisation. For example, where previously the Laplace mechanism would have been instantiated by Laplace().set_epsilon(1).set_sensitivity(1), it is now instantiated by Laplace(epsilon=1, sensitivity=1).
- The Wishart mechanism has been deprecated and will be removed in version 0.5. The Wishart mechanism is known not to satisfy differential privacy, and is therefore not recommended for use.
Non-breaking:
- The PCA model's algorithm has been modified, by using eigenvector sampling (through the Bingham mechanism) to estimate a dataset's principal components. Paper: Amin et al, 2019
- The LinearRegression model now uses objective perturbation to satisfy differential privacy. Paper: Zhang et al, 2012
- Python
Published by naoise-h about 5 years ago
differential-privacy-library - Diffprivlib 0.3.0
This release of diffprivlib includes a number of new additions, as well as various fixes to existing functionality. Some changes break backward compatibility with previous versions of the library. This version of diffprivlib supports Python 3.5 through 3.8.
The updates are summarised as follows.
Added
BudgetAccountantclass to keep track of privacy budget spent in a script (and associated notebook).Budgetclass to allow easy comparison (with<,>, etc) between privacy budgets of the form(epsilon, delta).count_nonzero,sumandnansumfunctions to calculate a differentially private count and sum on an array or list.GaussianDiscretemechanism, the discrete analogue to the Gaussian mechanism.clip_to_boundsandclip_to_normto clip input data to the given bounds/norm; used in tools and models as appropriate.- Notebook demonstrating data exploration and visualisation capabilities.
Changed
Breaking:
- The form/syntax of the bounds parameter passed to tools and models has changed; it is now specified as a tuple of the form (min, max). min and max can be scalars or 1-dimensional arrays.
Bounds can typically be converted to the new form with new_bounds = ([l for l, _ in bounds], [u for _, u in bounds]).
- All functions (other than histogram functions) that previously required a range parameter now requires bounds instead (e.g. models.LinearRegression, models.StandardScaler, tools.mean, etc.).
Non-breaking:
- Diffprivlib now requires scikit-learn version 0.22 or later.
- Geometric mechanism now has default sensitivity=1.This reflects the typical use of the geometric mechanism on count queries with sensitivity 1.
- All mechanisms now support zero sensitivity.
Fixed
- The publicly-exposed class counts in
models.GaussianNBnow satisfy differential privacy. Theclass_count_attribute is therefore noisy, and care must be taken in relying on these values for testing or other purposes. mean,stdandvartools, no longer require numpy array inputs, and can take all array-like inputs (e.g. scalars, lists and tuples).- Sensitivity calculation when randomising scalar-valued
varoutput.
- Python
Published by naoise-h over 5 years ago
differential-privacy-library - Diffprivlib 0.2.1
This release of diffprivlib includes a number of fixes to maintain compatibility with Scikit-learn version 0.23.
Fixed
- Minor fixes to
GaussianNB,StandardScalerandKMeansmodels to ensure continuing compatibility with sckit-learn versions 0.20.3 through 0.23.
- Python
Published by naoise-h almost 6 years ago
differential-privacy-library - Diffprivlib 0.2.0
This release of diffprivlib includes a number of newly supported models and functions, as well as minor fixes to existing features.
Added
- Principal components analysis (class
models.PCA) - Linear regression (class
models.LinearRegression) - Standard scaler (class
models.StandardScaler) - Wishart mechanism (class
mechanisms.Wishart) - Mean, standard deviation and variance with
NaNsupport (functionstools.nanmean,tools.nanstd,tools.nanvar) - Version accessibility at
diffprivlib.__version__ - Notebooks covering linear regression and pipelines
Fixed
- Gaussian naive Bayes (class
models.GaussianNB) no longer allowssample_weightto be specified when fitting the model to data (with thanks to Chris Clifton)
- Python
Published by naoise-h about 6 years ago