我是Weka中的新成員,我正在試圖創建一個新的實例,並使用之前的培訓過的MultilayerPerceptron進行標記,但我不太瞭解如何創建實例,因此我得到了第一個實例例如,從我的訓練數據則y修改它通過改變atributes值:創建一個新的weka實例
//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 "?";
}
}
可以是沒有做正確的方式,clasifiers獲得同等級值,我給所有的情況下,我認爲問題是我創建實例的方式。
我希望有人可以給我一個建議,在此先感謝
我不知道它是如何的一年已經走了,但現在的實例()構造函數被保護,這意味着你不能使用它。有關更多參考資料,請查看API:http://weka.sourceforge.net/doc.stable/(您仍然必須親自導航到實例文檔) – Mackiavelli
應該可以使用'new SparseInstance()'或'new DenseInstance()'代替。 – glaed