Nachtrag 2020/09/28 Dieser Artikel ist veraltet. Ich habe es hier neu organisiert. https://qiita.com/jashika/items/d7c86dd8053379fd909f
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.
Siehe hier für die ursprüngliche Geschichte. Wenn Sie Japanisch benötigen, lesen Sie bitte hier. Klicken Sie hier, um die Daten herunterzuladen.
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.
Ich habe DataSource
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 ~~
Ist es um #getData (), das mit testData # hoge # get (0) verbunden zu sein scheint? Verwenden wir vorerst getData ().
Ich werde wütend, wenn es keine LabelEvaluation # evalu-Methode (Model
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.
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?
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.
Ich habe es aus der Datendatei gelöscht. manuell.
Führe es nochmals aus. So etwas kam heraus. Ich werde später etwas mehr Details hinzufügen. ~~ Vielleicht. ~~
Recommended Posts