Je me suis rappelé Tribuo publié par Oracle. Tribuo --Une bibliothèque de prédiction Java (v4.0)

Postscript 28/09/2020 Cet article est obsolète. Je l'ai réorganisé ici. https://qiita.com/jashika/items/d7c86dd8053379fd909f

Préface

J'ai beaucoup de pensées, mais même si je me plains, ça ne démarre pas. Je vais plutôt faire cela, alors Oracle m'engagera. S'il te plait donne moi.

À propos des matériaux

Voir ici pour l'histoire originale. Si vous avez besoin du japonais, veuillez voir ici. Cliquez ici pour télécharger les données.

Bouger en quelque sorte

Téléchargez bezdekIris.data.

Transférez l'exemple de code du manuel Gatting Started vers un fichier Java. Parce que ce n'est pas nouveau, je ne suis pas du tout surpris. Si une telle variable n'est pas définie, vous vous fâcherez avec une erreur.

image.png

J'ai défini DataSource

image.png MutableDataset (testData) se fâche s'il n'y a pas de méthode MutableDataset # get (). ~~ S'il s'agit d'une classe Oracle, elle peut être appelée sans aucune méthode. Absolument tester ry ~~

image.png Est-ce autour de #getData () qui semble être connecté à testData # hoge # get (0)? Utilisons getData () pour le moment.

image.png

Je me fâche s'il n'y a pas de méthode LabelEvaluation # evaluer (Model

image.png Cependant, il n'y a même pas de méthode avec un nom similaire qui reçoit Model et MutableDataset comme arguments et retourne Evaluation. ~~ Je pense que c'est un génie d'appeler avec ça. Comme prévu, ça va ~~ Probablement, vous devez créer une instance de LabelEvaluator au lieu de créer une instance de LabelEvaluator. sûrement. Je devine. L'argument, le nom de la méthode et le type de valeur de retour correspondent.

image.png

Hmm. Lancez-le ~~ approprié ~~. Avec cela, l'erreur a disparu.

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 Arguments de la méthode principale.
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {

        //Iris étiqueté(Iris)Lire les données
        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)Ensemble de données de formation(70%)Et ensemble de test(30%)Divisée en
        var splitIrisData = new TrainTestSplitter<>(irisData, 0.7, 1L);

        var trainData = new MutableDataset<>(splitIrisData.getTrain());
        var testData = new MutableDataset<>(splitIrisData.getTest());

        //Apprenez l'arbre de décision
        var cartTrainer = new CARTClassificationTrainer();
        Model<Label> tree = cartTrainer.train(trainData);

        //Retour logistique
        var linearTrainer = new LogisticRegressionTrainer();
        Model<Label> linear = linearTrainer.train(trainData);

        //En fin de compte, faites des prédictions à partir de données invisibles
        //Chaque prédiction est notée à partir du nom de sortie (étiquette)/Mapper à la probabilité
        Prediction<Label> prediction = linear.predict(testData.getData().get(0));

        //L'ensemble de données de test complet peut être évalué pour calculer la précision, F1, etc.
        Evaluation<Label> evaluation = new LabelEvaluator().evaluate(linear, testData);

        //Inspectez l'évaluation manuelle.
        double acc = LabelEvaluation.class.cast(evaluation).accuracy();

        //Affichez la chaîne d'évaluation formatée.
        System.out.println(evaluation.toString());
    }
}

Je vais essayer. La ligne 151 n'est-elle qu'un élément? image.png

Ligne blanche···. La ligne vide n'est-elle pas ignorée? Y a-t-il un ressentiment parce que c'est un saut de ligne LF? En dehors de cela, vous pouvez ignorer cela, non? Ce n'est pas une violation des règles CSV.

image.png

Je l'ai supprimé du fichier de données. manuellement. image.png

Exécutez à nouveau. Quelque chose comme ça est sorti. J'ajouterai un peu plus de détails plus tard. ~~ Peut-être. ~~ image.png

Recommended Posts

Je me suis rappelé Tribuo publié par Oracle. Tribuo --Une bibliothèque de prédiction Java (v4.0)
J'ai essayé Tribuo édité par Oracle. Tribuo --Une bibliothèque de prédiction Java (v4.0)
J'ai touché Tribuo publié par Oracle. Document Tribuo --Une bibliothèque de prédiction Java (v4.0)
J'ai touché Tribuo publié par Oracle. Document Tribuo --Une bibliothèque de prédiction Java (v4.0)
J'ai essayé Tribuo édité par Oracle. Tribuo --Une bibliothèque de prédiction Java (v4.0)
Je me suis rappelé Tribuo publié par Oracle. Tribuo --Une bibliothèque de prédiction Java (v4.0)
J'ai jeté un coup d'œil aux ressources d'Azure Container Instance
Un regard sur Jenkins, OpenJDK 8 et Java 11
J'ai jeté un coup d'œil sur la façon dont l'interface Javascript de WebView est appelée lors de l'utilisation d'OkHttp.