GithubHelp home page GithubHelp logo

cpbridge / canopy Goto Github PK

View Code? Open in Web Editor NEW
9.0 3.0 1.0 1.14 MB

The Header-Only Library For Random Forests

License: GNU General Public License v3.0

Makefile 0.26% C++ 99.74%
machine-learning random-forest template-library classification circular-statistics circular-regression computer-vision

canopy's Introduction

Canopy - The Header-Only Library For Random Forests

Canopy is a C++ header-only template library for random forests. Random forests are a highly flexible and effective method for constructing machine learning models for a number of tasks by aggregating a number of decision trees.

The focus of this library is on providing an implementation that:

  • Makes use of modern template-based programming techniques to provide a highly flexible framework allowing the user to produce models for different tasks, such as classification and regression.
  • Is highly efficient in order to be suitable for using in time-critical applications such as video processing. This is achieved with highly efficient code as well as by taking advantage of the parallelisable nature of random forests using multi-threading with OpenMP.
  • Allows the user to execute arbitrary code to calculate features as required, allowing for highly flexible and efficient models for image processing and other applications.

Canopy is unashamedly an advanced tool, intended for users with a reasonable familiarity with C++ who are prepared to dig into the details of how random forests work to create new, efficient algorithms tailored to their own specific purpose. If you just want a quick tool to classify your personal collection of iris stamens, it probably isn't what you are looking for...

Features

The library contains a base class, randomForestBase, from which a range of models may be derived. There are also two predefined models that you can use straight away:

  • classifier - A random forest classifier
  • circularRegressor - A random forest model for predicting circular-valued (wrapped) variables

Others may be added in the future... if you develop one, feel free to contribute it!

Dependencies

Canopy requires a C++11 enabled compiler (preferably C++14) and depends upon the following popular, open-source libraries:

  • Boost
  • OpenMP (if you want to take advantage of multi-threading)
  • Eigen (only for the circularRegressor model)

Documentation

The full documentation for the library is provided here, and includes installation instructions, explanations and examples.

Author

Canopy was written by Chris Bridge at the University of Oxford's Institute of Biomedical Engineering.

Related

An early version of canopy was used in the implementation of a model to analyse medical ultrasound videos of the fetal heart. More details are available in these documents:

  • C.P. Bridge, “Computer-Aided Analysis of Fetal Cardiac Ultrasound Videos”, DPhil Thesis, University of Oxford, 2017. Available on my website.
  • C.P. Bridge, C. Ioannou, and J.A. Noble, “Automated Annotation and Quantitative Description of Ultrasound Videos of the Fetal Heart”, Medical Image Analysis 36 (February 2017) pp. 147-161. Open access available here.
  • C.P. Bridge, Christos Ioannou, and J.A. Noble, “Localizing Cardiac Structures in Fetal Heart Ultrasound Video”, Machine Learning in Medical Imaging Workshop, MICCAI, 2017, pp. 246-255. Original article available here. Authors' manuscript available on my website.

or on the author's website at http://chrisbridge.science/research.html.

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.