Запуск weka через C # - PullRequest
       4

Запуск weka через C #

0 голосов
/ 02 марта 2012

Я запускаю weka через код C #, код которого приведен ниже.

 using System;

 class MainClass
 {
      public static void Main(string[] args)
 {
     Console.WriteLine("Hello Java, from C#!");
     classifyTest();
  }

  const int percentSplit = 66;
  public static void classifyTest()
  {
     try
     {
         weka.core.Instances insts = new weka.core.Instances(new java.io.FileReader("iris.arff"));
         insts.setClassIndex(insts.numAttributes() - 1);

         weka.classifiers.Classifier cl = new weka.classifiers.trees.J48();
         Console.WriteLine("Performing " + percentSplit + "% split evaluation.");

         //randomize the order of the instances in the dataset.
                     weka.filters.Filter myRandom = new weka.filters.unsupervised.instance.Randomize();
         myRandom.setInputFormat(insts);
                     insts = weka.filters.Filter.useFilter(insts, myRandom);

         int trainSize = insts.numInstances() * percentSplit / 100;
         int testSize = insts.numInstances() - trainSize;
         weka.core.Instances train = new weka.core.Instances(insts, 0, trainSize);

         cl.buildClassifier(train);
         int numCorrect = 0;
         for (int i = trainSize; i < insts.numInstances(); i++)
         {
             weka.core.Instance currentInst = insts.instance(i);
             double predictedClass = cl.classifyInstance(currentInst);
             if (predictedClass = insts.instance(i).classValue())
                 numCorrect++;
         }
         Console.WriteLine(numCorrect + " out of " + testSize + " correct (" +
                    (double)((double)numCorrect / (double)testSize * 100.0) + "%)");
     }
     catch (java.lang.Exception ex)
     {
         ex.printStackTrace();
     }
 }

 }
 //end of file Main.cs

Я добавил файл Weka.dll и ikvm.JDK.Core.dll.Но я получаю эту ошибку, когда пытаюсь запустить

, инициализатор типа для 'java.io.file' выдал исключение

, в чем может быть проблема?

Ответы [ 4 ]

5 голосов
/ 27 мая 2016

Проблема в том, что вы не добавили все необходимые ссылки. Вы должны добавить все dll-файлы, которые начинаются с ikvm.OpenJDK, и файл IKVM.Runtime.dll также убедитесь, что вы преобразовали weka.jar в weka. .dll с использованием IKVM

1 голос
/ 05 января 2013

убедитесь, что вы добавили ссылки для IKVM.Runtime.dll и IKVM.Runtime.JNI.dll

0 голосов
/ 20 ноября 2013
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using weka.classifiers.meta;
using weka.classifiers.functions;
using weka.core;
using java.io;
using weka.clusterers;
using System.Diagnostics;
using System.Threading;

Я протестировал этот скрипт, используя приведенные выше библиотеки, и получил ошибку double to bool:

     if (predictedClass = insts.instance(i).classValue())
         numCorrect++;

, но в остальном он работал нормально, если был задан путь к iris.arff.Надеюсь, это поможет.

0 голосов
/ 25 марта 2012

Вы не указываете путь для "iris.arff", возможно, файл не находится в каталоге запуска вашего приложения.

...