MCPcopy Index your code
hub / github.com/datumbox/datumbox-framework

github.com/datumbox/datumbox-framework @0.8.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release 0.8.2 ↗ · + Follow
2,046 symbols 8,080 edges 288 files 1,956 documented · 96%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Datumbox Machine Learning Framework

Build Status Windows Build status Maven Central License

Datumbox

The Datumbox Machine Learning Framework is an open-source framework written in Java which allows the rapid development Machine Learning and Statistical applications. The main focus of the framework is to include a large number of machine learning algorithms & statistical methods and to be able to handle large sized datasets.

Copyright & License

Copyright (C) 2013-2020 Vasilis Vryniotis.

The code is licensed under the Apache License, Version 2.0.

Installation & Versioning

Datumbox Framework is available on Maven Central Repository.

The latest stable version of the framework is 0.8.2 (Build 20200805). To use it, add the following snippet in your pom.xml:

    <dependency>
        <groupId>com.datumbox</groupId>
        <artifactId>datumbox-framework-lib</artifactId>
        <version>0.8.2</version>
    </dependency>

The latest snapshot version of the framework is 0.8.3-SNAPSHOT (Build 20200805). To test it, update your pom.xml as follows:

    <repository>
       <id>sonatype-snapshots</id>
       <name>sonatype snapshots repo</name>
       <url>https://oss.sonatype.org/content/repositories/snapshots</url>
    </repository>

    <dependency>
        <groupId>com.datumbox</groupId>
        <artifactId>datumbox-framework-lib</artifactId>
        <version>0.8.3-SNAPSHOT</version>
    </dependency>

The develop branch is the development branch (default github branch), while the master branch contains the latest stable version of the framework. All the stable releases are marked with tags.

The releases of the framework follow the Semantic Versioning approach. For detailed information about the various releases check out the Changelog.

Documentation and Code Examples

All the public methods and classes of the Framework are documented with Javadoc comments. Moreover for every model there is a JUnit Test which clearly shows how to train and use the models. Finally for more examples on how to use the framework checkout the Code Examples or the official Blog.

Pre-trained Models

Datumbox comes with a large number of pre-trained models which allow you to perform Sentiment Analysis (Document & Twitter), Subjectivity Analysis, Topic Classification, Spam Detection, Adult Content Detection, Language Detection, Commercial Detection, Educational Detection and Gender Detection. To get the binary models check out the Datumbox Zoo.

Which methods/algorithms are supported?

The Framework currently supports performing multiple Parametric & non-parametric Statistical tests, calculating descriptive statistics on censored & uncensored data, performing ANOVA, Cluster Analysis, Dimension Reduction, Regression Analysis, Timeseries Analysis, Sampling and calculation of probabilities from the most common discrete and continues Distributions. In addition it provides several implemented algorithms including Max Entropy, Naive Bayes, SVM, Bootstrap Aggregating, Adaboost, Kmeans, Hierarchical Clustering, Dirichlet Process Mixture Models, Softmax Regression, Ordinal Regression, Linear Regression, Stepwise Regression, PCA and several other techniques that can be used for feature selection, ensemble learning, linear programming solving and recommender systems.

Bug Reports

Despite the fact that parts of the Framework have been used in commercial applications, not all classes are equally used/tested. Currently the framework is in Alpha version, so you should expect some changes on the public APIs on future versions. If you spot a bug please submit it as an Issue on the official Github repository.

Contributing

The Framework can be improved in many ways and as a result any contribution is welcome. By far the most important feature missing from the Framework is the ability to use it from command line or from other languages such as Python. Other important enhancements include improving the documentation, the test coverage and the examples, improving the architecture of the framework and supporting more Machine Learning and Statistical Models. If you make any useful changes on the code, please consider contributing them by sending a pull request.

Acknowledgements

Many thanks to Eleftherios Bampaletakis for his invaluable input on improving the architecture of the Framework. Also many thanks to ej-technologies GmbH for providing a license for their Java Profiler and to JetBrains for providing a license for their Java IDE.

Useful Links

Extension points exported contracts — how you extend this code

Savable (Interface)
The Savable interface is implemented by all the objects that can be stored. @author Vasilis Vryniotis <bbriniotis@datum [10 …
datumbox-framework-core/src/main/java/com/datumbox/framework/core/common/interfaces/Savable.java
Copyable (Interface)
This interface is implemented by all classes which implement the copy() method. @author Vasilis Vryniotis <bbriniotis@d [6 …
datumbox-framework-common/src/main/java/com/datumbox/framework/common/interfaces/Copyable.java
TrainParallelizable (Interface)
All Machine Learning models capable of using parallelism during training implement this interface. @author Vasilis Vryn [7 …
datumbox-framework-core/src/main/java/com/datumbox/framework/core/machinelearning/common/interfaces/TrainParallelizable.java
Configurable (Interface)
All configuration classes of the framework need to inherit this interface. @author Vasilis Vryniotis <bbriniotis@datumb [8 …
datumbox-framework-common/src/main/java/com/datumbox/framework/common/interfaces/Configurable.java
Parallelizable (Interface)
All algorithms capable of using parallelism implement this interface. @author Vasilis Vryniotis <bbriniotis@datumbox.co [16 …
datumbox-framework-core/src/main/java/com/datumbox/framework/core/machinelearning/common/interfaces/Parallelizable.java
Feature (Interface)
This interface must be implemented by all the feature switches. @author Vasilis Vryniotis [1 implementers]
datumbox-framework-common/src/main/java/com/datumbox/framework/development/interfaces/Feature.java
PredictParallelizable (Interface)
All Machine Learning models capable of predicting records in parallel implement this interface. @author Vasilis Vryniot [9 …
datumbox-framework-core/src/main/java/com/datumbox/framework/core/machinelearning/common/interfaces/PredictParallelizable.java
StorageEngine (Interface)
StorageEngines that give access to a permanent storage should implement this interface. The storage engine should open t [1 …
datumbox-framework-common/src/main/java/com/datumbox/framework/common/storage/interfaces/StorageEngine.java

Core symbols most depended-on inside this repo

put2d
called by 733
datumbox-framework-common/src/main/java/com/datumbox/framework/common/dataobjects/AssociativeArray2D.java
put
called by 663
datumbox-framework-core/src/main/java/com/datumbox/framework/core/machinelearning/common/dataobjects/TrainableBundle.java
put
called by 450
datumbox-framework-common/src/main/java/com/datumbox/framework/common/dataobjects/AssociativeArray.java
getValue
called by 257
datumbox-framework-core/src/main/java/com/datumbox/framework/core/mathematics/linearprogramming/LPSolver.java
entrySet
called by 203
datumbox-framework-common/src/main/java/com/datumbox/framework/common/dataobjects/AssociativeArray.java
get
called by 192
datumbox-framework-core/src/main/java/com/datumbox/framework/core/common/dataobjects/Dataframe.java
add
called by 177
datumbox-framework-core/src/main/java/com/datumbox/framework/core/common/dataobjects/Dataframe.java
close
called by 157
datumbox-framework-core/src/main/java/com/datumbox/framework/core/common/dataobjects/Dataframe.java

Shape

Method 1,648
Class 363
Interface 18
Enum 17

Languages

Java100%

Modules by API surface

datumbox-framework-core/src/main/java/com/datumbox/framework/core/common/dataobjects/Dataframe.java46 symbols
datumbox-framework-core/src/main/java/com/datumbox/framework/core/machinelearning/clustering/Kmeans.java43 symbols
datumbox-framework-core/src/main/java/com/datumbox/framework/core/machinelearning/common/abstracts/algorithms/AbstractDPMM.java36 symbols
datumbox-framework-core/src/main/java/com/datumbox/framework/core/machinelearning/clustering/HierarchicalAgglomerative.java34 symbols
datumbox-framework-core/src/main/java/com/datumbox/framework/core/machinelearning/topicmodeling/LatentDirichletAllocation.java32 symbols
datumbox-framework-core/src/test/java/com/datumbox/framework/core/statistics/descriptivestatistics/DescriptivesTest.java29 symbols
datumbox-framework-core/src/main/java/com/datumbox/framework/core/statistics/descriptivestatistics/Descriptives.java29 symbols
datumbox-framework-core/src/main/java/com/datumbox/framework/core/machinelearning/clustering/GaussianDPMM.java27 symbols
datumbox-framework-core/src/main/java/com/datumbox/framework/core/machinelearning/classification/OrdinalRegression.java27 symbols
datumbox-framework-core/src/main/java/com/datumbox/framework/core/machinelearning/featureselection/PCA.java24 symbols
datumbox-framework-core/src/main/java/com/datumbox/framework/core/machinelearning/classification/SoftMaxRegression.java24 symbols
datumbox-framework-core/src/main/java/com/datumbox/framework/core/machinelearning/regression/NLMS.java23 symbols

For agents

$ claude mcp add datumbox-framework \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page