2011-03-07 27 views

Respuesta

14

Un poco tarde ahora, seguramente, pero voy a responder de todos modos. Debe usar weka.jar, libsvm.jar y wlsvm.jar (el contenedor libsvm) en su proyecto. Así que solo incluye los 3 jar en tu camino de construcción o clase o lo que sea.

Puede obtener el wlsvm.jar desde aquí: http://www.cs.iastate.edu/~yasser/wlsvm/

, usted puede obtener weka desde aquí: http://www.cs.waikato.ac.nz/ml/weka/

y se puede obtener libsvm desde aquí: http://www.csie.ntu.edu.tw/~cjlin/libsvm/

no pude conseguir que esto trabajo con weka 3.7.7 o 3.7.8, pero pude hacerlo funcionar con 3.6.8 (la última versión estable a día de hoy).

Además, como tuve que obtener los archivos .class del svnlib y también incluirlos en la ruta de compilación de mi proyecto. Para compilar los archivos .class, use el archivo make en SVNLib/java.

Aquí es una pequeña pieza de código para empezar:

 DataSource source = new DataSource(new File("mycsvinputfile")); 
     System.out.println(source.getStructure()); 
     Instances data = source.getDataSet(); 

     // setting class attribute if the data format does not provide this information 
     // For example, the XRFF format saves the class attribute information as well 
     if (data.classIndex() == -1) 
      data.setClassIndex(data.numAttributes() - 1); 

     //initialize svm classifier 
     LibSVM svm = new LibSVM(); 
     svm.buildClassifier(data); 

Buena suerte.

2

Siga este enlace para combinar Weka y libsvm http://www.cs.iastate.edu/~yasser/wlsvm/

weka es buena calculando la República de China, memoria, etc .... y libsvm que es bueno para la clasificación, regresión, etc ...

4

Para utilice la biblioteca libSVM con la versión más nueva de weka (3.7.9), solo necesita usar el "Administrador de paquetes" de la aplicación weka e instalar el paquete libSVM.

Finalmente, desde el proyecto java, tiene que agregar la biblioteca LibSVM creada por el "Administrador de paquetes" al Classpath.

Normalmente está en el directorio "(HOME) \ wekafiles \ packages \ LibSVM".

4

Resulta que los chicos weka han hecho nuestro trabajo MUCHO más fácil con las versiones más recientes haciendo que todo esté disponible desde Maven Central.

simplemente obtener la dependencia de aquí: http://mvnrepository.com/artifact/nz.ac.waikato.cms.weka/LibSVM

y todo funcionará por lo que van dependencias. No te metas con envoltorios y agregas jar a classpath o algo por el estilo.

Estoy usando la versión 3.7.12 pero supongo que ha estado disponible desde que se agregó la función de administrador de paquetes a la GUI.

7

Con la nueva versión solo necesita el weka.jarra y llamada SVM como este,

WekaPackageManager.loadPackages(false, true, false); 
AbstractClassifier classifier = (AbstractClassifier) Class.forName(
      "weka.classifiers.functions.LibSVM").newInstance(); 

Si prefiere dar opciones establezca las opciones como ésta

String options = ("-S 0 -K 0 -D 3 -G 0.0 -R 0.0 -N 0.5 -M 40.0 -C 1.0 -E 0.001 -P 0.1"); 
String[] optionsArray = options.split(" "); 
    classifier.setOptions(optionsArray); 

Finalmente entrenar el clasificador

classifier.buildClassifier(train);