【发布时间】: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