我通过C#代码运行weka,代码如下所示。
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”的类型初始值设定项引发了异常
可能的问题是什么?
发布于 2016-05-27 11:34:13
问题是您没有添加所需的所有引用,您必须添加所有以ikvm.OpenJDK开头的dll文件,并且文件IKVM.Runtime.dll还确保您使用IKVM将weka.jar转换为weka.dll
发布于 2013-01-05 05:09:49
确保为IKVM.Runtime.dll和IKVM.Runtime.JNI.dll添加引用
发布于 2012-03-25 17:36:45
您没有指定"iris.arff"的路径,该文件可能不在应用程序的启动目录中。
https://stackoverflow.com/questions/9531264
复制相似问题