【问题标题】:C# code to run weka Classifier using IKVM.net and WEKA.net使用 IKVM.net 和 WEKA.net 运行 weka 分类器的 C# 代码
【发布时间】:2019-11-26 00:20:55
【问题描述】:

我在 C# (visual studio 2017) 中使用相同的代码,并且在项目中包含了 IKVM.OpenJDK.*.dll(最新版​​本)和 weka.dll

private void button1_Click(object sender, EventArgs e)
        {
            class_test(); 
        }

const int percentSplit = 60;
        public void class_test()
        {
            string resualt = "";

            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();    // choose type of classifer algorithms 

                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++;
                }

                System.Console.WriteLine(numCorrect + " out of " + testSize + " correct (" +
                    (double)((double)numCorrect / (double)testSize * 100.0) + "%)");
            }
            catch (java.lang.Exception ex)
            {
                ex.printStackTrace();
            }
        }

但我收到以下错误:

第一:

类型 Reader 在未引用的程序集中定义。你 必须添加引用程序集 'vislib, Version=1.0.5000.0, Cultureneutral PublicKey Token-b0315f7f11d50a3a 选择

就行了:

weka.core.Instances insts = new weka.core.Instances(new java.io.FileReader("iris.arff"));

new weka.core.Instances

秒:

参数 1:无法从 'java.io.FileReader' 转换为 'weka.core.instances

在同一行:

weka.core.Instances insts = new weka.core.Instances(new java.io.FileReader("iris.arff"));

(new java.io.FileReader("iris.arff"));

为了解决第二个错误,我尝试为另一个旧版本添加 Ikvm.GUN.classpath.dll 作为参考,但我收到以下错误:

类型 FileReader 存在于 'IKVM.GNU.Classpath, Version= 0.12.0.0,Culture=neutral,PublicKey Token13235d27fcbfff58 和 'IKVM.Open/DK.Core Version=7.2.4630.5,Culture=neutral,PublicKey 代币:13235d271cbfff58

请问,谁能帮帮我?

【问题讨论】:

    标签: c# visual-studio-2017 weka data-mining ikvm


    【解决方案1】:

    检查.dll生成命令执行后的输出警告信息,如果你看到这样的东西,即:

    警告 IKVMC0108:不是类文件“weka/core/Instances.class”,包括它作为资源(类格式错误“52.0”)

    那么 IKVM Java 版本与 weka.jar 构建版本不一致

    你可以在这里下载Java 8版本的IKVM:http://www.frijters.net/ikvmbin-8.1.5717.0.zip

    【讨论】:

      猜你喜欢
      • 2012-04-06
      • 1970-01-01
      • 2015-07-07
      • 2012-04-09
      • 2013-04-05
      • 2017-10-12
      • 2012-10-31
      • 2014-09-23
      • 2015-04-29
      相关资源
      最近更新 更多