Ich habe Tribuo von Oracle berührt. Document Tribuo - Eine Java-Vorhersagebibliothek (v4.0)

Nachtrag 2020/09/28 Dieser Artikel ist veraltet. Ich habe es hier neu organisiert. https://qiita.com/jashika/items/d7c86dd8053379fd909f

Introduction Tribuo ist eine Java-Bibliothek zum Erstellen und Bereitstellen von Modellen für maschinelles Lernen. Das Kernentwicklungsteam ist die Oracle Labs Machine Learning Research Group, die diese Bibliothek unter einer Apache 2.0-Lizenz auf Github veröffentlicht.

· Die API ist stark typisiert und enthält Parameter für Modelle, Prädiktoren, Datensätze und Beispiele.

· Die API ist auf hohem Niveau, das Modell verwendet Beispiele und erzeugt Vorhersagewerte, jedoch keine Float-Arrays.

· APIs sind vereinheitlicht, alle Vorhersage-Typen haben dieselbe (gut typisierte) API, und Tribuo-Klassen werden nach Vorhersage-Typ parametrisiert (z. B. Klassifizierung verwendet Label, Regression verwendet Regressor). Ich werde es benutzen).

-Die API ist wiederverwendbar, modular und nur für das, was Sie benötigen, in kleinen Teilen verpackt, sodass Sie nur das installieren können, was Sie benötigen.

Tribuo bietet eine breite Palette von ML-Algorithmen und -Funktionen mit derselben API.

・ Klassifikation: Lineares Modell, SVM, Baum, Ensemble, Deep Learning

-Return: Lineares Modell, Lineare Regression mit Strafen, SVM, Baum, Ensemble, Deep Learning

・ Clustering: K-Mittel

・ Abnormalitätserkennung: SVM

Wir planen, die verfügbaren Algorithmen im Laufe der Zeit zu erhöhen.

Tribuo erleichtert das Laden von Datensätzen, das Trainieren von Modellen und das Auswerten von Modellen anhand von Testdaten. Dieser Code trainiert und bewertet beispielsweise ein logistisches Regressionsmodell.

var trainSet = new MutableDataset<>(new LibSVMDataSource("train-data",new LabelFactory()));
var model    = new LogisticRegressionTrainer().train(trainSet);
var eval     = new LabelEvaluator().evaluate(new LibSVMDataSource("test-data",trainSet.getOutputFactory()));

Getting Started Um Tribuo zu einem Projekt zu machen, setzt Maven Folgendes fest.

<dependency>
    <groupId>org.tribuo</groupId>
    <artifactId>tribuo-all</artifactId>
    <version>4.0.0</version>
    <type>pom</type>
</dependency>

Das Tribuo-All-Modul erfasst den gesamten Tribuo. Sie können später eine Teilmenge bestimmter Anwendungsfälle auswählen. Hier ist ein einfaches Beispiel, das zeigt, wie ein Klassifizierungssystem erstellt und bewertet wird. Dazu gibt es vier Schritte.

  1. Lesen Sie den Datensatz zur Klassifizierung von Irisarten aus CSV.
  2. Teilen Sie den Datensatz in einen Trainingsdatensatz und einen Testdatensatz.
  3. Lernen Sie zwei Arten von Modellen mit unterschiedlichen Trainern.
  4. Prognostizieren Sie den Testsatz anhand des Modells und bewerten Sie die Leistung des gesamten Testsatzes.
//Beschriftete Iris(Iris)Daten lesen
var irisHeaders = new String[]{"sepalLength", "sepalWidth", "petalLength", "petalWidth", "species"};
DataSource<Label> irisData =
        new CSVLoader<>(new LabelFactory()).loadDataSource(Paths.get("bezdekIris.data"),
                                     /* Output column   */ irisHeaders[4],
                                     /* Column headers  */ irisHeaders);

//Iris(Iris)Trainingsdatensatz(70%)Und Testset(30%)Eingeteilt in
var splitIrisData = new TrainTestSplitter<>(irisesSource,
                       /* Train fraction */ 0.7,
                             /* RNG seed */ 1L);
var trainData = new MutableDataset<>(splitIrisData.getTrain());
var testData = new MutableDataset<>(splitIrisData.getTest());

//Lernen Sie den Entscheidungsbaum
var cartTrainer = new CARTClassificationTrainer();
Model<Label> tree = cartTrainer.train(trainData);

//Logistische Rückgabe
var linearTrainer = new LogisticRegressionTrainer();
Model<Label> linear = linearTrainer.train(trainData);

//Machen Sie letztendlich Vorhersagen aus unsichtbaren Daten
//Jede Vorhersage wird anhand des Ausgabenamens (Label) bewertet./Karte zur Wahrscheinlichkeit
Prediction<Label> prediction = linear.predict(testData.get(0));

//Der vollständige Testdatensatz kann ausgewertet werden, um Genauigkeit, F1 usw. zu berechnen.
Evaluation<Label> evaluation = new LabelEvaluation().evaluate(linear,testData);

//Überprüfen Sie die manuelle Bewertung.
double acc = evaluation.accuracy();

//Zeigen Sie die formatierte Bewertungszeichenfolge an.
System.out.println(evaluation.toString());

Die formatierte Auswertungsausgabe sieht folgendermaßen aus:

Class                           n          tp          fn          fp      recall        prec          f1
Iris-versicolor                16          16           0           1       1.000       0.941       0.970
Iris-virginica                 15          14           1           0       0.933       1.000       0.966
Iris-setosa                    14          14           0           0       1.000       1.000       1.000
Total                          45          44           1           1
Accuracy                                                                    0.978
Micro Average                                                               0.978       0.978       0.978
Macro Average                                                               0.978       0.980       0.978
Balanced Error Rate                                                         0.022

Weitere Informationen zu diesem Beispiel finden Sie im Klassifizierungs-Tutorial mit demselben Iris-Dataset. ~~ Später übersetzen. ~~ übersetzt.

Documentation Overview Die Funktionsliste gibt einen Überblick darüber, was Tribuo kann und welche Algorithmen es sowohl nativ als auch über Schnittstellen zu Bibliotheken von Drittanbietern unterstützt. Der beste Weg, um Tribuo zu verstehen, ist das Lesen der Tribuo-Architekturdokumentation. Beschreibt grundlegende Definitionen, Datenfluss, Bibliotheksstruktur, Einstellungen (einschließlich Optionen und Erfolge), Laden von Daten, Konvertierung, Beispieldetails und Verschleierungsfunktionen, die zum Ausblenden von Eingabefunktionen verwendet werden können. In der Paketstrukturübersicht wird beschrieben, wie Tribuo-Pakete nach den von ihnen unterstützten maschinellen Lernaufgaben organisiert sind. Diese Pakete sind in Modulen zusammengefasst, sodass sich Tribuo-Benutzer nur auf das verlassen können, was sie implementieren müssen. Lesen Sie unbedingt die Sicherheitsvorkehrungen für die Verwendung von Tribuo und die Erwartungen der Benutzer. Weitere Fragen und allgemeine Fragen finden Sie in den FAQ. Weitere Informationen zu allen Klassen und Paketen finden Sie in Tribuos JavaDoc.

Tutorials Tutorial-Hinweise zu Klassifizierungs-, Clustering-, Regressions-, Anomalieerkennungs- und Konfigurationssystemen sind verfügbar. Sie verwenden den Java Jupyter-Notebook-Kernel und laufen unter Java 10+. Es sollte einfach sein, den Tutorial-Code wieder in Java 8-Code zu integrieren, indem das Schlüsselwort var durch den entsprechenden Typ ersetzt wird.

Configuration and Provenance Tribuo-Trainer können vollständig über das OLCUT-Konfigurationssystem konfiguriert werden. Auf diese Weise können Sie einen Trainer einmal in einer XML- (oder JSON- oder EDN-) Datei definieren und ein iteratives Modell mit genau denselben Parametern erstellen. Der Konfigurationsordner für jedes Paket enthält ein Beispiel für die bereitgestellten Trainereinstellungen. Modelle können mithilfe der Java-Serialisierung sowie des Datensatzes selbst serialisiert werden, und die verwendeten Konfigurationen werden in jedem Modell gespeichert. Für alle Modelle und Bewertungen, wann das Modell oder die Bewertung erstellt wurde, welche Daten verwendet wurden, welche Transformationen auf die Daten angewendet wurden, welche Hyperparameter der Trainer hat und im Fall der Bewertung welches Modell Enthält ein serialisierbares Zertifikatobjekt, das aufzeichnet, was verwendet wurde. Diese Informationen können in JSON extrahiert oder mithilfe der Java-Serialisierung direkt serialisiert werden. In einer Produktionsumgebung können diese Leistungsinformationen durch einen Hash ersetzt und bearbeitet werden, um die Modellverfolgung über ein externes System bereitzustellen. Erfahren Sie mehr über Einstellungen, Optionen und Zertifikate.

Platform Support & Requirements Tribuo läuft auf Java 8+ und wurde mit LTS-Versionen von Java und den neuesten Versionen getestet. Tribuo selbst ist eine Java-Bibliothek und wird auf allen Java-Plattformen unterstützt. Einige Schnittstellen erfordern jedoch nativen Code und werden nur dort unterstützt, wo sich die native Bibliothek befindet. Getestet auf x86_64-Architektur unter Windows 10, MacOS, Linux (RHEL / OL / CentOS 7+). Wenn Sie an einer anderen Plattform interessiert sind und eine der nativen Bibliotheksschnittstellen (ONNX-Laufzeit, TensorFlow, XGBoost) verwenden möchten, empfehlen wir, sich an die Entwickler dieser Bibliotheken zu wenden.

Recommended Posts

Ich habe Tribuo von Oracle berührt. Document Tribuo - Eine Java-Vorhersagebibliothek (v4.0)
Ich habe Tribuo von Oracle ausprobiert. Tribuo - Eine Java-Vorhersagebibliothek (v4.0)
Ich erinnerte mich an Tribuo, das von Oracle veröffentlicht wurde. Tribuo - Eine Java-Vorhersagebibliothek (v4.0)
Ich habe Tribuo von Oracle berührt. Dokument Tribuo --Intro-Klassifizierung mit Iris
Ich habe zuerst Java touched berührt
Ich habe zuerst Java touched berührt
Ich habe zuerst Java touched berührt
Ich habe zuerst Java berührt
Ich habe eine Docker-Datei erstellt, um Glassfish 5 mit Oracle Java zu starten
Als ich mich wieder an Tribuo erinnerte, das von Oracle veröffentlicht wurde, war die Person in mir eine heiße Person.
Java erstellt Word-Dokumente
[Java] Ich habe versucht, mit der Grabmethode ein Labyrinth zu erstellen ♪