mis weka muestra la salida:weka - Cómo imprimir incorrectamente instancias de anuncios
Correctly Classified Instances 32083 94.0244 %
Incorrectly Classified Instances 2039 5.9756 %
yo quiero ser capaz de imprimir lo que eran los casos incorrectos para que pueda hacer los ajustes y entender por qué fueron mal clasificados.
mi método de impresión está a continuación.
Estoy intentando encontrar instancias cuyo valor de clase predicho no era igual al valor de clase real y luego imprimir sus atributos.
pero cuando hago esto, la enumeración de atributos no imprime nada.
¿Alguien tiene alguna sugerencia de cómo imprimir las instancias mal clasificadas?
muchas gracias.
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());
}
me acabo de dar cuenta de que está vacío porque me olvidé de envolverlo en una declaración de impresión. – britt
desafortunadamente agregarlo a la declaración de impresión o iterar sobre los valores de la enumeración simplemente me muestra todos los valores posibles de todos los atributos. en realidad, no me dice cuáles fueron los valores attrib para mis instancias mal clasificadas. Cualquier ayuda es muy apreciada. – britt
Entiendo que "Weka output" es de Weka Explorer? Si es así, estos resultados son para validación cruzada, y es muy probable que realice pruebas de otra manera. Antes de sumergirte en el código, ¿puedes hacer una prueba simple? Agrega la cláusula 'else' a tu' si' y cuenta cuántas instancias están realmente clasificadas correctamente ('pred == actual'). – ffriend