Skip to content

lmc2179/pysterior

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pysterior

pysterior is a machine learning library for Python which aims to make Bayesian parametric regression and classification models accessible and easy to use. The library allows users to construct supervised learning models using an intuitive interface similar to that used by scikit-learn.

More documentation is to come - this is still a very new project.

Under the hood, pysterior uses the implementation of the No-U-Turn Sampler (Hoffman and Gelman, 2011) provided by the thoroughly wonderful pymc3. Pymc3 is a requirement to run pysterior; see the pymc3 page to find out how to get the latest version.

Download pysterior on PyPI: https://pypi.python.org/pypi/pysterior

You can install the latest version of this package from PyPI, where it is currently in alpha. The following models are currently supported:

  • regression module:
    • (Bayesian) Linear Regression
    • Ridge Regression
    • Lasso Regression
    • Robust Linear regression (Cauchy-distributed noise)
    • Polynomial regression
  • classification module:
    • Binary Logistic regression

Coming soon:

  • k-class Logistic regression
  • More non-linear models

For demos, checkout the demos directory.

Simple linear regression example:

Linear Regression

    TRUE_ALPHA, TRUE_SIGMA = 1, 1
    TRUE_BETA = 2.5
    size = 100
    X = np.linspace(0, 1, size)
    noise = (np.random.randn(size)*TRUE_SIGMA)
    y = (TRUE_ALPHA + TRUE_BETA*X + noise)
    
    lr = regression.LinearRegression()
    lr.fit(X, y, 5000)
    plt.plot(X, y, linewidth=0.0, marker='x', color='g')
    pred_post_points = [lr.get_predictive_posterior_samples(x) for x in X]
    transpose = list(zip(*pred_post_points))
    for y_values in transpose:
        plt.plot(X, y_values, color='r')
    predicted_line = lr.predict(X)
    plt.plot(X, predicted_line)
    plt.show()

Versions released:

  • 0.1.0 - first release, Linear regression models
  • 0.1.1 - predict() takes 2-dimensional array instead of single data point; added predict_central_credible_interval(X, alpha) for predicting central credible intervales of output
  • 0.1.2 - added Polynomial regression
  • 0.1.3 - added Highest Posterior Density Interval (HPDI) estimation for regression models
  • 0.1.4 - added access to pymc3 traceplot and summary from model object; allowed manual selection of metropolis sampler if desired
  • 0.1.5 - added Binary Logistic regression model

About

Bayesian supervised learning in Python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages