Ich erinnerte mich an Tribuo, das von Oracle veröffentlicht wurde. 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

Vorwort

Ich habe viele Gedanken, aber selbst wenn ich mich nur beschwere, fängt es nicht an. Ich werde das eher machen, also wird Oracle mich einstellen. Bitte gib mir.

Über Materialien

Siehe hier für die ursprüngliche Geschichte. Wenn Sie Japanisch benötigen, lesen Sie bitte hier. Klicken Sie hier, um die Daten herunterzuladen.

Bewegen Sie sich irgendwie

Laden Sie [bezdekIris.data] herunter (https://archive.ics.uci.edu/ml/machine-learning-databases/iris/bezdekIris.data).

Übertragen Sie den Beispielcode aus dem Handbuch Gatting Started in eine Java-Datei. Weil es nicht neu ist, bin ich überhaupt nicht überrascht. Wenn eine solche Variable nicht definiert ist, werden Sie über einen Fehler verärgert.

image.png

Ich habe DataSource

image.png MutableDataset (testData) wird wütend, wenn es keine MutableDataset # get () -Methode gibt. ~~ Wenn es sich um eine Oracle-Klasse handelt, kann sie ohne Methode aufgerufen werden. Absolut testen ry ~~

image.png Ist es um #getData (), das mit testData # hoge # get (0) verbunden zu sein scheint? Verwenden wir vorerst getData ().

image.png

Ich werde wütend, wenn es keine LabelEvaluation # evalu-Methode (Model

image.png Es gibt jedoch nicht einmal eine Methode mit einem ähnlichen Namen, die Model und MutableDataset als Argumente empfängt und Evaluation zurückgibt. ~~ Ich denke, es ist ein Genie, damit zu telefonieren. Wie erwartet ist es in Ordnung ~~ Wahrscheinlich müssen Sie eine Instanz von LabelEvaluator erstellen, anstatt eine Instanz von LabelEvaluation zu erstellen. sicherlich. Ich vermute. Das Argument, der Methodenname und der Rückgabewerttyp stimmen überein.

image.png

Hmm. Wirf es ~~ passend ~~. Damit verschwand der Fehler.

TribuoSample


/**
 *
 */
package org.project.eden.adam;

import java.io.IOException;
import java.nio.file.Paths;

import org.tribuo.DataSource;
import org.tribuo.Model;
import org.tribuo.MutableDataset;
import org.tribuo.Prediction;
import org.tribuo.classification.Label;
import org.tribuo.classification.LabelFactory;
import org.tribuo.classification.dtree.CARTClassificationTrainer;
import org.tribuo.classification.evaluation.LabelEvaluation;
import org.tribuo.classification.evaluation.LabelEvaluator;
import org.tribuo.classification.sgd.linear.LogisticRegressionTrainer;
import org.tribuo.data.csv.CSVLoader;
import org.tribuo.evaluation.Evaluation;
import org.tribuo.evaluation.TrainTestSplitter;

/**
 * @author jashika
 *
 */
public class TribuoSample {

    /**
     * @param args Hauptmethodenargumente.
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {

        //Beschriftete Iris(Iris)Daten lesen
        var irisHeaders = new String[] { "sepalLength", "sepalWidth", "petalLength", "petalWidth", "species" };
        DataSource<Label> irisData = new CSVLoader<>(new LabelFactory()).loadDataSource(Paths.get("/Users/admin/Downloads/bezdekIris.data"),irisHeaders[4],irisHeaders);

        //Iris(Iris)Trainingsdatensatz(70%)Und Testset(30%)Eingeteilt in
        var splitIrisData = new TrainTestSplitter<>(irisData, 0.7, 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.getData().get(0));

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

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

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

Ich werde es versuchen. Ist Zeile 151 nur ein Element? image.png

Leerzeile···. Ignoriert es nicht leere Zeilen? Gibt es Ressentiments, weil es ein LF-Zeilenumbruch ist? Abgesehen davon ist es in Ordnung, dies zu ignorieren, oder? Es ist kein Verstoß gegen die CSV-Regeln.

image.png

Ich habe es aus der Datendatei gelöscht. manuell. image.png

Führe es nochmals aus. So etwas kam heraus. Ich werde später etwas mehr Details hinzufügen. ~~ Vielleicht. ~~ image.png

Recommended Posts

Ich erinnerte mich an Tribuo, das von Oracle veröffentlicht wurde. Tribuo - Eine Java-Vorhersagebibliothek (v4.0)
Ich habe Tribuo von Oracle ausprobiert. Tribuo - Eine Java-Vorhersagebibliothek (v4.0)
Ich habe Tribuo von Oracle berührt. Document Tribuo - Eine Java-Vorhersagebibliothek (v4.0)
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 mir die Ressourcen der Azure Container-Instanz angesehen
Ein Blick auf Jenkins, OpenJDK 8 und Java 11
Ich habe mir kurz angesehen, wie die Javascript-Oberfläche von WebView bei Verwendung von OkHttp aufgerufen wird.