在Accord中,我应该使用什么来进行非线性向量回归?谢谢(训练输入是double[][],训练输出是double[],而不是int[])
回答:
Accord.NET为回归问题提供了支持向量机学习算法,具体在SequentialMinimalOptimizationRegression类中。关于这个主题的示例应用可以在示例应用的wiki页面中找到示例应用。
以下是如何使用它的示例:
// 示例回归问题。假设我们试图建模以下方程:f(x, y) = 2x + ydouble[][] inputs = // (x, y){ new double[] { 0, 1 }, // 2*0 + 1 = 1 new double[] { 4, 3 }, // 2*4 + 3 = 11 new double[] { 8, -8 }, // 2*8 - 8 = 8 new double[] { 2, 2 }, // 2*2 + 2 = 6 new double[] { 6, 1 }, // 2*6 + 1 = 13 new double[] { 5, 4 }, // 2*5 + 4 = 14 new double[] { 9, 1 }, // 2*9 + 1 = 19 new double[] { 1, 6 }, // 2*1 + 6 = 8};double[] outputs = // f(x, y){ 1, 11, 8, 6, 13, 14, 20, 8};// 创建顺序最小优化教师var learn = new SequentialMinimalOptimizationRegression<Polynomial>(){ Kernel = new Polynomial(degree: 2)}// 使用教师学习一个新机器var svm = teacher.Learn(inputs, outputs);// 计算一个特定例子的答案double fxy = machine.Transform(inputs[0]); // 1.0003849827673186// 计算所有例子的答案 double[] fxys = machine.Transform(inputs);