Erstellen Sie eine neue weka-Instanz
Ich bin neu in Weka und versuche, neue Instanzen zu erstellen, die mit einem zuvor trainierten benannt werdenMultilayerPerceptron
Ich wusste nicht viel darüber, wie man eine Instanz erstellt, also habe ich die erste Instanz aus meinen Trainingsdaten abgerufen und sie dann durch Ändern der Attributwerte geändert:
//Opening the model
public boolean abrirModelo(String ruta) {
try {
clasificador = (MultilayerPerceptron) weka.core.SerializationHelper.read(ruta);
return true;
} catch (IOException e) {
System.out.println("Fallo la lectura del archivo");
return false;
} catch (ClassNotFoundException a) {
System.out.println("Fallo el casting");
return false;
}catch(Exception e){
System.out.println("Error con el castingo");
return false;
}
}
//getting the first instance to be modified
public boolean inicializarInstancias(String directorio){
archivo = new ArffLoader();
try {
archivo.setFile(new File(directorio));
structure = archivo.getStructure();
structure.setClassIndex(structure.numAttributes() - 1);
actual = archivo.getNextInstance(structure); //instance to be used
} catch (IOException ex) {
System.out.println("Algo salio mal al cargar la estructura de lsa instancias");
}
return true;
}
//creating an instance from my local data using the previous instantiated actual instance, it is a List of Points with x and y
public Instance convertir(LineaDeArchivo line) {
int size = line.getDatos().size();
for (int i = 0; i < size; i+=2) {
actual.setValue(i, line.getDatos().get(i).x);
actual.setValue(i + 1, line.getDatos().get(i).y);
}
return actual;
}
//getting the class
public String getClase(Instance e){
try{
double clase;
clase = clasificador.classifyInstance(e);
return structure.classAttribute().value((int) clase);
}catch(Exception a){
System.out.println("Algo salio mal con la clasificacion");
return "?";
}
}
Vielleicht ist das nicht der richtige Weg, die Clasifier erhalten den gleichen Klassenwert für alle Instanzen, die ich gebe. Ich denke, das Problem ist, wie ich die Instanz erstelle.
Ich hoffe jemand konnte mir einen Rat geben, vielen Dank im Voraus