Giter Site home page Giter Site logo

dpiras / gmm-mi Goto Github PK

View Code? Open in Web Editor NEW
17.0 4.0 3.0 77.76 MB

Estimation of mutual information (MI) distribution with Gaussian mixture models (GMMs)

License: GNU General Public License v3.0

Python 2.02% Jupyter Notebook 97.98%
deep-learning gmm mutual-information

gmm-mi's People

Contributors

dpiras avatar lluciesmith avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

gmm-mi's Issues

Extend to higher-dimensional variables

So far, GMM-MI can only be applied to unidimensional variables; we want to extend it to the multivariate case. It should not be too much work, since we showed that we can extend to higher dimensionalities with conditional MI.

We need to choose if we can re-use the methods currently implemented to estimate MI between unidimensional variables, or whether it is cleaner to create three separate methods. Once implemented, we plan to test this against e.g. work done in Sui et al. (2023).

Create method for contour plots

To better visualise the fitted model of the joint pdf, especially in higher dimensions when the conditional MI is computed, it would be nice to use something like chainconsumer to use the original samples and samples from the fitted GMM to obtain contour plots to compare.

Add different units

Should be a simple tweak at the end, based on the required base of the logarithm (nats, bits)

Store all metrics

When fitting a model, a single metric (validation loss, AIC or BIC) is used to select the number of components. However it might be nice to also store the value of the BIC and AIC (if using validation) so that one does not have to re-fit the model to get the other values of the metrics.

More flexibility in the input shape

So far, only arrays with shape (n_samples, 2) can be passed in the continuous case. This can be annoying if I have the samples from the two variables as separate arrays, since one needs to manually stack them. It should be easy to add the possibility of passing either a 2-D array, or two 1-D arrays.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.