Git Product home page Git Product logo

pushkar / abagail Goto Github PK

View Code? Open in Web Editor NEW
245.0 28.0 490.0 2.22 MB

The library contains a number of interconnected Java packages that implement machine learning and artificial intelligence algorithms. These are artificial intelligence algorithms implemented for the kind of people that like to implement algorithms themselves.

License: BSD 3-Clause "New" or "Revised" License

Java 93.69% Python 5.60% Shell 0.08% HTML 0.54% Batchfile 0.08%
artificial-intelligence-algorithms neural-network java machine-learning optimization-algorithms

abagail's Introduction

ABAGAIL

Build Status

The library contains a number of interconnected Java packages that implement machine learning and artificial intelligence algorithms. These are artificial intelligence algorithms implemented for the kind of people that like to implement algorithms themselves.

Usage

*For discrete optimization problems see java examples /src/opt/test or jython versions /jython
*For jython | csv | python and grid search examples see /jython
*Also see Wiki, FAQ

Contributing

  1. Fork it.
  2. Create a branch (git checkout -b my_branch)
  3. Commit your changes (git commit -am "Awesome feature")
  4. Push to the branch (git push origin my_branch)
  5. Open a Pull Request
  6. Enjoy a refreshing Diet Coke and wait

Features

Hidden Markov Models

  • Baum-Welch reestimation algorithm, scaled forward-backward algorithm, Viterbi algorithm
  • Support for Input-Output Hidden Markov Models
  • Write your own output or transition probability distribution or use the provided distributions, including neural network based conditional probability distributions
  • Neural Networks

Feed-forward backpropagation neural networks of arbitrary topology

  • Configurable error functions with sum of squares, weighted sum of squares
  • Multiple activation functions with logistic sigmoid, linear, tanh, and soft max
  • Choose your weight update rule with standard update rule, standard update rule with momentum, Quickprop, RPROP
  • Online and batch training
  • Support Vector Machines

Fast training with the sequential minimal optimization algorithm

  • Support for linear, polynomial, tanh, radial basis function kernels
  • Decision Trees

Information gain or GINI index split criteria

  • Binary or all attribute value splitting
  • Chi-square signifigance test pruning with configurable confidence levels
  • Boosted decision stumps with AdaBoost
  • K Nearest Neighbors

Fast kd-tree implementation for instance based algorithms of all kinds

  • KNN Classifier with weighted or non-weighted classification, customizable distance function
  • Linear Algebra Algorithms

Basic matrix and vector math, a variety of matrix decompositions based on the standard algorithms

  • Solve square systems, upper triangular systems, lower triangular systems, least squares
  • Singular Value Decomposition, QR Decomposition, LU Decomposition, Schur Decomposition, Symmetric Eigenvalue Decomposition, Cholesky Factorization
  • Make your own matrix decomposition with the easy to use Householder Reflection and Givens Rotation classes
  • Optimization Algorithms

Randomized hill climbing, simulated annealing, genetic algorithms, and discrete dependency tree MIMIC

  • Make your own crossover functions, mutation functions, neighbor functions, probability distributions, or use the provided ones.
  • Optimize the weights of neural networks and solve travelling salesman problems
  • Graph Algorithms

Kruskals MST and DFS

  • Clustering Algorithms

EM with gaussian mixtures, K-means

  • Data Preprocessing

PCA, ICA, LDA, Randomized Projections

  • Convert from continuous to discrete, discrete to binary
  • Reinforcement Learning

Value and policy iteration for Markov decision processes

abagail's People

Contributors

chitradip avatar dacohen avatar hodapp87 avatar jeremym171 avatar jlm429 avatar johnbrun avatar joshuamorton avatar jtrussell avatar kaniska avatar kathrynalpert avatar klittlepage avatar michaeldickkk avatar nickbjohnson4224 avatar nkrusch avatar omkar avatar oneeman avatar orsenthil avatar pushkar avatar pushkar3 avatar robert-lawrence avatar robododge avatar rohanrk avatar ryanpeach avatar shashir avatar swyxio avatar thejenix avatar timting avatar vincenzodentamaro avatar yiqic avatar zhou-yuxin avatar

Stargazers

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

Watchers

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

abagail's Issues

License?

Is this library meant to be released under an open source style license? Without one it's unclear what uses of this code are acceptable - can this be used in a commercial context, for example? Strictly speaking, without a license, modifying and redistributing the code are copyright infringement.

I believe predicted and actual are switched in abalone_test

predicted = instance.getLabel().getContinuous() print "predicted ", predicted actual = networks[i].getOutputValues().get(0) print "actual ", actual
When I run that code, you see that predicted is either 0 or 1, and the actual is shown as a continuous value.

Since the data is loaded with all values less than 15 "washed" as a 1 and 0 if otherwise, these values are swapped in the code.

Not a big deal since the code is measuring absolute value of difference, but can be confusing

Sum of Squared Errors

When porting to python the SumOfSquaredErrors.java file, you only loop through the output size and don't look at the rest of the examples. This doesn't seem like correct behavior.

https://github.com/pushkar/ABAGAIL/blob/master/src/shared/SumOfSquaresError.java#L22

I'm not certain but I think this might be the right way to do it
for (int i = 0; i < output.size(); i++) {
for (int j = 0; i < label.size(); i++) {
sum += (output.getContinuous(i) - label.getContinuous(j))
* (output.getContinuous(i) - label.getContinuous(j))
* example.getWeight(); // Not sure if weight should change or move out of the whole thing (as in multiply by weight at the end).
}

I just wanted to get your thoughts on this.

build fail with ant

Line 40 and 41 of build.xml should be:

    <target name="javadoc" depends="prepare" >
        <javadoc sourcepath="${src.dir}" destdir="${jdocs.dir}" additionalparam="subpackages"/>

the current version fails when run ant.

ArffDataSetReader initializes instances with null labels

The ArffDataSetReader initializes all instances with null labels when reading an arff file.

The error ends up looking like this

Running Random Hill ClimbingException in thread "main" java.lang.NullPointerException
	at shared.SumOfSquaresError.value(Unknown Source)
	at opt.example.NeuralNetworkEvaluationFunction.value(Unknown Source)
	at opt.example.NeuralNetworkOptimizationProblem.value(Unknown Source)
	at opt.RandomizedHillClimbing.<init>(Unknown Source)
	at tests.OptdigitsTest.main(Unknown Source)

Error running example from wiki

If I run the example in the wiki:

cd ABAGAIL
ant
java -cp ABAGAIL.jar opt.test.XORTest

I get
Error: Could not find or load main class opt.test.XORTest

ABAGAIL.arrays fails search when sample is not found

The search method in ABAGAIL.arrays does not return a valid index when the value found is at the top end of the distribution. The start 'high' value is the length of the array instead of length - 1, which results in the 'high' value sometimes returning an index that is out of bounds from the array.

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.