现在的位置: 首页 > 综合 > 正文

C#代码调用Weka

2012年03月13日 ⁄ 综合 ⁄ 共 1497字 ⁄ 字号 评论关闭

  我们知道,Weka是一个用Java语言开发的机器学习工具包(http://blog.csdn.net/Felomeng/archive/2009/10/17/4687061.aspx)。那么如果想在C#中调用怎么办?可以使用IKVM(http://blog.csdn.net/Felomeng/article/details/4063343)。

  IKVM转换weka.jar的命令是:ikvmc -target:library weka.jar。运行后,会产生一个新的文件weka.dll。在C#的工程中添加引用,将这个dll文件引用进来(还需要添加一些java依赖类,如IKVM.OpenJDK.Core.dll,都可以在IKVM里面找到),就可以代码调用weka了,调用方法同java中调用weka的方法(http://blog.csdn.net/Felomeng/article/details/4688257)。

  这里给出一个示例代码(需要适当修改才能运行):

        public static voidclassifyTest()

        {

            try

            {

                vartrainingSet = new weka.core.Instances(newjava.io.FileReader("G:\\test.arff"));

                trainingSet.setClassIndex(0);

 

                weka.classifiers.Classifier classifier = newweka.classifiers.lazy.KStar();

 

               

               classifier.buildClassifier(trainingSet);

 

                intnumCorrect = 0;

                for(int i = 0; i < trainingSet.numInstances();i++)

                {

                    weka.core.Instance currentInst = trainingSet.instance(i);

                    varpredictedClass = classifier.classifyInstance(currentInst);

                    if(predictedClass == trainingSet.instance(i).classValue())

                        numCorrect++;

                }

                MessageBox.Show(numCorrect+ " out of " +trainingSet.numInstances() + " correct ("+

                           (double)((double)numCorrect/ (double)trainingSet.numInstances() * 100.0) +"%)");

            }

            catch(java.lang.Exception ex)

            {

                ex.printStackTrace();

            }

        }

 

抱歉!评论已关闭.