miei weka spettacoli di uscita:weka - come stampare correttamente le istanze classificati
Correctly Classified Instances 32083 94.0244 %
Incorrectly Classified Instances 2039 5.9756 %
mi vogliono essere in grado di stampare ciò che le istanze non corrette erano così posso effettuare le regolazioni e capire perché sono stati classificati erroneamente.
il mio metodo di stampa è di seguito.
Sto tentando di trovare le istanze il cui valore di classe previsto non era uguale al valore effettivo della classe e quindi di stampare i relativi attributi.
ma quando faccio questo l'enumerazione degli attributi non stampa nulla.
Qualcuno ha un suggerimento su come stampare le istanze errate?
grazie mille.
private void printSummary(Classifier base, Evaluation eval, Instances data) throws Exception
{
// output evaluation
System.out.println();
System.out.println("=== Setup ===");
System.out.println("Classifier: " + classifierName.getClass().getName() + " " + Utils.joinOptions(base.getOptions()));
System.out.println("Dataset: " + data.relationName());
System.out.println();
// output predictions
System.out.println("# - actual - predicted - error - distribution - token");
for (int i = 0; i < data.numInstances(); i++)
{
double pred = base.classifyInstance(data.instance(i));
double actual = data.instance(i).classValue();
double[] dist = base.distributionForInstance(data.instance(i));
if (pred != actual)
{
System.out.print((i+1));
System.out.print(" - ");
System.out.print(data.instance(i).toString(data.classIndex()));
System.out.print(" - ");
System.out.print(data.classAttribute().value((int) pred));
System.out.print(" - ");
if (pred != data.instance(i).classValue())
System.out.print("yes");
else
System.out.print("no");
System.out.print(" - ");
System.out.print(Utils.arrayToString(dist));
System.out.print(" - ");
data.instance(i).enumerateAttributes().toString();
System.out.println();
}
}
System.out.println(eval.toSummaryString());
System.out.println(eval.toClassDetailsString());
System.out.println(eval.toMatrixString());
}
ho appena realizzato che è vuoto perché ho dimenticato di avvolgerlo in una dichiarazione di stampa. – britt
sfortunatamente aggiungendolo a print statement o iterando sui valori dell'enum mi mostra solo tutti i possibili valori di tutti gli attributi. in realtà non mi dice quali sono stati i valori di attrib per le mie istanze classificate erroneamente. Qualsiasi aiuto è molto apprezzato. – britt
Capisco, "Uscita Weka" è di Weka Explorer? Se è così, questi risultati sono per la convalida incrociata e molto probabilmente si fanno test in qualche altro modo. Prima di immergerti nel codice, puoi fare un semplice test: aggiungi la clausola 'else' al tuo' if' e conta quante istanze sono effettivamente classificate correttamente ('pred == actual')? – ffriend