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 original
import 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); /* Data de test */ rp.setInputFormat(iDataSet); rp.setInvertSelection(true); Instances iTest = Filter.useFilter(iDataSet, rp); } }
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!!