2012-03-02 3 views
0

나는 weka를 C# 코드를 통해 실행하고 있으며 이에 대한 코드는 아래와 같습니다.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에'의 형식 이니셜을 실행하려고 예외

어떤 문제가 될 수를 던질 때하지만이 오류가?

답변

0

"iris.arff"의 경로를 지정하지 않았으므로 파일이 응용 프로그램의 시작 디렉토리에 있지 않을 수 있습니다.

+0

경로를 지정한 후에도 동일한 오류가 발생합니다. – Cyang

1

당신은 내가 같이가 followes 위의 라이브러리를 사용하여이 스크립트를 테스트하고 부울 에러로 이중 가지고 IKVM.Runtime.dll 및 IKVM.Runtime.JNI.dll

0
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; 

에 대한 Refrences를 추가해야합니다 :

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

그렇지 않으면 iris.arff의 경로가 설정되면 제대로 작동합니다. 이게 도움이 되길 바란다.

0

문제는 필요한 모든 참조를 추가하지 않았다는 것입니다. ikvm.OpenJDK로 시작하는 모든 dll 파일과 IKVM.Runtime.dll 파일을 추가해야합니다. 또한 weka.jar을 다음으로 변환했는지 확인하십시오. IKVM을 사용하는 weka.dll

+0

이 [URL] (http://stackoverflow.com/help)을 확인하여 콘텐츠 품질을 높여야합니다. –

관련 문제