- Well-designed API consistent with modern Java API design standards
- Efficient and robust decision tree learner
- Random forests implementation
- Meta-parameter optimizer
- Released under the LGPL v3 free software license
11th July, 2015: 0.8.0 released
The core functionality for building trees has been broken out of the former TreeBuilder into more generic components that can be used to build other kinds of trees apart from decision trees. Unit tests have also been added for these components. Additionally, tree build time appears to have improved by about 15%, and memory usage is decreased. Mahout / Hadoop are also no longer dependencies, making the jar lighter weight.
2nd March, 2015: 0.6.0 released
Major API redesign and refactor.
Ask questions and contribute
Come say "Hi!" on our Discussion Forum, or improve QuickML and submit a pull request through GitHub. Want to help? Take a look at our open issues and see if there is anything you can tackle, fork our code, then submit a pull request.
Documentation of QuickML is currently lagging significantly behind functionality, but the API is fairly well defined and should be mostly self-explanatory using the examples below as a starting point, just start poking around the source code, particularly the unit tests. You can also improve this site by editing this file.
Please also note that the QuickML API remains subject to change, and will continue to do so until 1.0 (although we will only make such changes if we're convinced they're necessary to make the API as good as it can be).
How to use
Add the following repository to your Maven pom.xml file:
<repository> <id>jitpack.io</id> <url>https://jitpack.io</url> </repository>Add the following dependency to your Maven pom.xml file:
<dependency> <groupId>com.github.sanity</groupId> <artifactId>quickml</artifactId> <version>Find latest release here</version> </dependency>
Build a simple predictive model
Here we train a random forest on the well-known Fisher Iris dataset, which is included with QuickML for your convenience. We then generate a prediction for a particular set of input attributes:
import quickml.data.*; import quickml.supervised.classifier.randomForest.*; // ... List<ClassifierInstance> irisDataset = PredictiveAccuracyTests.loadIrisDataset(); final RandomDecisionForest randomForest =new RandomDecisionForestBuilder<>(new DecisionTreeBuilder<>() .scorerFactory(new GRPenalizedGiniImpurityScorerFactory(1.0)) .maxDepth(8) .minAttributeValueOccurences(0) .attributeIgnoringStrategy(new IgnoreAttributesWithConstantProbability(0.2))) .numTrees(4) .buildPredictiveModel(irisDataset); System.out.println("Prediction: " + randomForest.getProbability(attributes, "Iris-virginica"));
QuickML was initially created by Ian Clarke. Since early 2014, it has been co-architected by Ian and Alex Hawk, and has benefited from significant contributions from Chris Reeves and Michael Kelly of OneSpot.