Hola a tod@s,
Llevo unos días intentando hacer un clasificador con la librería Java de Weka, y tengo un pequeño problema que me está sacando de quicio. A ver si vosotros sabéis como proceder.
Primero, leo la base de datos (un archivo .arff con 9 atributos numéricos y 1 atributo para la clase que puede ser 2 o 4). Ver:
http://web.cs.iastate.edu/~cs573x/la...wisconsin.arff
Estos datos se insertan en la instancia iDataSet y luego los divido en una instancia iTrain (75%) y otra instancia iTest (25%).
Aquí pongo el código fuente que funciona perfectamente:
Código Java:
Ver originalimport weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;
import weka.filters.Filter;
import weka.filters.unsupervised.instance.RemovePercentage;
public class gettingStarted {
// Cargamos en memoria el archivo ARFF
DataSource oDataSet = new DataSource( "breast-cancer-wisconsin.arff" );
/* Convertimos la data a un objeto Instances */
Instances iDataSet = oDataSet.getDataSet();
/* Configuramos la clase de la data */
iDataSet.setClassIndex( iDataSet.numAttributes() - 1 );
/* Filtro */
/* Data de train */
RemovePercentage rp = new RemovePercentage();
rp.setPercentage(25.0);
rp.setInputFormat(iDataSet);
Instances iTrain = Filter.useFilter(iDataSet, rp);
System.
out.
println("iTrain: " + iTrain
);
/* Data de test */
rp.setInputFormat(iDataSet);
rp.setInvertSelection(true);
Instances iTest = Filter.useFilter(iDataSet, rp);
System.
out.
println("iTest: " + iTest
); }
}
El problema, es que quiero crearme una nueva instancia igual que iTest, que contenga únicamente estos datos: 4,8,8,5,4,5,10,4,1,4
He conseguido hacerlo leyendo un nuevo .arff. Podéis ver como queda en mi repositorio de GitHub:
https://github.com/pebosch/gettingSt...ngStarted.java
Pero no se como hacerlo sin leer un nuevo .arff. Necesito meter los datos utilizando variables, nada de otros ficheros.
¿¿Sabéis como podría hacerlo??
¡¡Gracias de antemano!!