开源软件名称(OpenSource Name):oracle/tribuo开源软件地址(OpenSource Url):https://github.com/oracle/tribuo开源编程语言(OpenSource Language):Java 90.4%开源软件介绍(OpenSource Introduction):Tribuo - A Java prediction library (v4.2)Tribuo is a machine learning library in Java that provides multi-class classification, regression, clustering, anomaly detection and multi-label classification. Tribuo provides implementations of popular ML algorithms and also wraps other libraries to provide a unified interface. Tribuo contains all the code necessary to load, featurise and transform data. Additionally, it includes the evaluation classes for all supported prediction types. Development is led by Oracle Labs' Machine Learning Research Group; we welcome community contributions. All trainers are configurable using the OLCUT configuration system. This allows a user to define a trainer in an xml file and repeatably build models. Example configurations for each of the supplied Trainers can be found in the config folder of each package. These configuration files can also be written in json or edn by using the appropriate OLCUT configuration dependency. Models and datasets are serializable using Java serialization. All models and evaluations include a serializable provenance object which records the creation time of the model or evaluation, the identity of the data and any transformations applied to it, as well as the hyperparameters of the trainer. In the case of evaluations, this provenance information also includes the specific model used. Provenance information can be extracted as JSON, or serialised directly using Java serialisation. For production deployments, provenance information can be redacted and replaced with a hash to provide model tracking through an external system. Many Tribuo models can be exported in ONNX format for deployment in other languages, platforms or cloud services. Tribuo runs on Java 8+, and we test on LTS versions of Java along with the
latest release. Tribuo itself is a pure Java library and is supported on all
Java platforms; however, some of our interfaces require native code and are
thus supported only where there is native library support. We test on x86_64
architectures on Windows 10, macOS and Linux (RHEL/OL/CentOS 7+), as these are
supported platforms for the native libraries with which we interface. If you're
interested in another platform and wish to use one of the native library
interfaces (ONNX Runtime, TensorFlow, and XGBoost), we recommend reaching out
to the developers of those libraries. Note the reproducibility package
requires Java 17, and as such is not part of the Documentation
TutorialsTutorial notebooks, including examples of Classification, Clustering,
Regression, Anomaly Detection, TensorFlow, document classification, columnar
data loading, working with externally trained models, and the configuration
system, can be found in the tutorials. These use the
IJava Jupyter notebook kernel, and work
with Java 10+, except the reproducibility tutorial which requires Java 17. To
convert the tutorials' code back to Java 8, in most cases simply replace the
AlgorithmsGeneral predictorsTribuo includes implementations of several algorithms suitable for a wide range of prediction tasks:
The ensembles and K-NN use a combination function to produce their output. These combiners are prediction task specific, but the ensemble & K-NN implementations are task agnostic. We provide voting and averaging combiners for multi-class classification, multi-label classification and regression tasks. ClassificationTribuo has implementations or interfaces for:
Tribuo also supplies a linear chain CRF for sequence classification tasks. This CRF is trained via SGD using any of Tribuo's gradient optimizers. To explain classifier predictions there is an implementation of the LIME algorithm. Tribuo's implementation allows the mixing of text and tabular data, along with the use of any sparse model as an explainer (e.g., regression trees, lasso etc), however it does not support images. RegressionTribuo's regression algorithms are multidimensional by default. Single dimensional implementations are wrapped in order to produce multidimensional output.
ClusteringTribuo includes infrastructure for clustering and also supplies two clustering algorithm implementations. We expect to implement additional algorithms over time.
Anomaly DetectionTribuo offers infrastructure for anomaly detection tasks. We expect to add new implementations over time.
Multi-label classificationTribuo offers infrastructure for multi-label classification, along with a wrapper which converts any of Tribuo's multi-class classification algorithms into a multi-label classification algorithm. We expect to add more multi-label specific implementations over time.
InterfacesIn addition to our own implementations of Machine Learning algorithms, Tribuo also provides a common interface to popular ML tools on the JVM. If you're interested in contributing a new interface, open a GitHub Issue, and we can discuss how it would fit into Tribuo. Currently we have interfaces to:
BinariesBinaries are available on Maven Central, using groupId Maven: <dependency>
<groupId>org.tribuo</groupId>
<artifactId>tribuo-all</artifactId>
<version>4.2.1</version>
<type>pom</type>
</dependency> or from Gradle: implementation ("org.tribuo:tribuo-all:4.2.1@pom") {
transitive = true // for build.gradle (i.e., Groovy)
// isTransitive = true // for build.gradle.kts (i.e., Kotlin)
} The Most of Tribuo is pure Java and thus cross-platform, however some of the
interfaces link to libraries which use native code. Those interfaces
(TensorFlow, ONNX Runtime and XGBoost) only run on supported platforms for the
respective published binaries, and Tribuo has no control over which binaries
are supplied. If you need support for a specific platform, reach out to the
maintainers of those projects. As of the 4.1 release these native packages all
provide x86_64 binaries for Windows, macOS and Linux. It is also possible to
compile each package for macOS ARM64 (i.e., Apple Silicon), though there are no
binaries available on Maven Central for that platform. When developing on an
ARM platform you can select the Individual jars are published for each Tribuo module. It is preferable to depend only on the modules necessary for the specific project. This prevents your code from unnecessarily pulling in large dependencies like TensorFlow. Compiling from sourceTribuo uses Apache Maven v3.5 or higher to build.
Tribuo is compatible with Java 8+, and we test on LTS versions of Java along
with the latest release. To build, simply run Repository LayoutDevelopment happens on the ContributingWe welcome contributions! See our contribution guidelines. We have a discussion mailing list tribuo-devel@oss.oracle.com, archived here. We're investigating different options for real time chat, check back in the future. For bug reports, feature requests or other issues, please file a Github Issue. Security issues should follow our reporting guidelines. LicenseTribuo is licensed under the Apache 2.0 License. Release Notes:
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论