我在使用accord.net
方面是新手,正在尝试按照你提供的页面上的步骤,将代码逐步应用到Visual Studio C#
的一个简单应用程序中。
我已经成功应用了“标准分类问题”部分的代码,但当我尝试应用“朴素贝叶斯”部分的代码时,在运行时遇到了一个异常,描述如下:
在mscorlib.dll中发生未处理的类型System.AggregateException的异常
,没有进一步的描述。
这个异常发生在以下命令中:
var nb = learner.Learn(inputs, outputs)
我的代码如下:
DataTable table = new celReader("examples.xls").GetWorksheet("Classification - Yin Yang"); // 将DataTable转换为输入和输出向量 double[][] inputs = table.ToArray<double>("X", "Y"); int[] outputs = table.Columns["G"].ToArray<int>(); // 绘制数据 ScatterplotBox.Show("Yin-Yang", inputs, outputs).Hold(); var learner = new NaiveBayesLearning<NormalDistribution>(); // 估计朴素贝叶斯 var nb = learner.Learn(inputs, outputs); // 这里抛出异常 // 使用模型对样本进行分类 int[] answers = nb.Decide(inputs); // 绘制结果 ScatterplotBox.Show("Expected results", inputs, outputs); ScatterplotBox.Show("Naive Bayes results", inputs, answers).Hold();
我的程序的堆栈跟踪如下:
回答:
从你帖子中提到的同一页面下载的examples.xls文件似乎包含了不正确/不兼容/过时的数据。在列G中,将所有-1替换为0(第2到51行)可以解决问题,使用的是Accord v3.4.2-alpha版本。