Postscript 28/09/2020 Cet article est obsolète. Je l'ai réorganisé ici. https://qiita.com/jashika/items/d7c86dd8053379fd909f
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.
Voir ici pour l'histoire originale. Si vous avez besoin du japonais, veuillez voir ici. Cliquez ici pour télécharger les données.
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.
J'ai défini DataSource
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 ~~
Est-ce autour de #getData () qui semble être connecté à testData # hoge # get (0)? Utilisons getData () pour le moment.
Je me fâche s'il n'y a pas de méthode LabelEvaluation # evaluer (Model
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.
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?
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.
Je l'ai supprimé du fichier de données. manuellement.
Exécutez à nouveau. Quelque chose comme ça est sorti. J'ajouterai un peu plus de détails plus tard. ~~ Peut-être. ~~
Recommended Posts