C# Net得到支持向量机模型的方程

C# Net得到支持向量机模型的方程,c#,machine-learning,accord.net,C#,Machine Learning,Accord.net,我一直在测试样本核支持向量机的回归问题,我想知道如何得到模型的方程 例如,如果机器是使用多项式核度=1创建的,那么如何获得该模型的线方程mx+b。SupportVectorMachine类中是否有任何方法可以获得模型方程?或者,是否有任何方法可以根据机器创建后获得的变量计算方程式的参数 提前感谢。看起来您可以使用以下方法: ,其中 将线性核机器转换为线性系数数组。 数组中的第一个位置是阈值 在你的语言中,数组中的第一个位置是偏差b,其余的是线性系数m 看起来您可以使用以下方法: ,其中 将线性核

我一直在测试样本核支持向量机的回归问题,我想知道如何得到模型的方程

例如,如果机器是使用多项式核度=1创建的,那么如何获得该模型的线方程mx+b。SupportVectorMachine类中是否有任何方法可以获得模型方程?或者,是否有任何方法可以根据机器创建后获得的变量计算方程式的参数


提前感谢。

看起来您可以使用以下方法:

,其中

将线性核机器转换为线性系数数组。 数组中的第一个位置是阈值


在你的语言中,数组中的第一个位置是偏差b,其余的是线性系数m

看起来您可以使用以下方法:

,其中

将线性核机器转换为线性系数数组。 数组中的第一个位置是阈值


在你的语言中,数组中的第一个位置是偏差b,其余的是线性系数m

当使用序列最小优化时,我从ToWeights得到了奇怪的系数,我无法从中导出超平面方程。然而,使用线性协调设计可以得到模型的可用系数,其形式为[a,b,c…],可插入为0=a+bx+cy+。。。
希望有帮助

当使用序列最小优化时,我从ToWeights得到了奇怪的系数,我无法从中导出超平面方程。然而,使用线性协调设计可以得到模型的可用系数,其形式为[a,b,c…],可插入为0=a+bx+cy+。。。
希望有帮助

正如@zrolfs所指出的,如果使用Accord.NET进行顺序最小优化,ToWeights函数当前不会返回决策函数的相关系数。不过,您可以直接计算这些系数。为此,将SVM权重向量乘以支持向量矩阵,如下所示:

double[] DecisionFunctionCoefficients = new double[dwTotalFeatures];
for (int iFeature = 0; iFeature < dwTotalFeatures; iFeature++) {
     for (int iVector = 0; iVector < SVM.SupportVectors.Length; iVector++) {
         DecisionFunctionCoefficients[iFeature] += (SVM.SupportVectors[iVector][iFeature] * SVM.Weights[iVector]);
     }
}

正如@zrolfs所指出的,如果使用Accord.NET进行顺序最小优化,ToWeights函数当前不会返回决策函数的相关系数。不过,您可以直接计算这些系数。为此,将SVM权重向量乘以支持向量矩阵,如下所示:

double[] DecisionFunctionCoefficients = new double[dwTotalFeatures];
for (int iFeature = 0; iFeature < dwTotalFeatures; iFeature++) {
     for (int iVector = 0; iVector < SVM.SupportVectors.Length; iVector++) {
         DecisionFunctionCoefficients[iFeature] += (SVM.SupportVectors[iVector][iFeature] * SVM.Weights[iVector]);
     }
}

我不明白答案。对于y=x的行,输出数组为{0,4,0};对于y=2x的行,输出数组为{0,7,0}。我刚刚添加了这行double[]linearCoef=svm.ToWeights;您是否提供了足够的培训数据?你是如何学习你的模型的?你的训练数据是什么?请具体一点。再次感谢您的回复。我正在使用6个数据对的简单演示。对于y=x{0,0,1,1,…,5,5}和y=2x{0,0,1,2,…,5,10}。我使用演示样本核支持向量机来解决回归问题,我使用多项式核度=1,常数=1来创建机器。显示模型的图形输出是什么?我希望一条线通过所有数据点,错误=0如果你有两个变量的问题,比如x和y,你不应该期望公式类似于z=xa+yb+c而不是y=mx吗?在这种情况下,如果框架将数组{0,4,0}作为输出,这意味着c=0,首先是阈值/偏差,然后是a=4和b=0。我不明白答案。对于y=x的行,输出数组为{0,4,0};对于y=2x的行,输出数组为{0,7,0}。我刚刚添加了这行double[]linearCoef=svm.ToWeights;您是否提供了足够的培训数据?你是如何学习你的模型的?你的训练数据是什么?请具体一点。再次感谢您的回复。我正在使用6个数据对的简单演示。对于y=x{0,0,1,1,…,5,5}和y=2x{0,0,1,2,…,5,10}。我使用演示样本核支持向量机来解决回归问题,我使用多项式核度=1,常数=1来创建机器。显示模型的图形输出是什么?我希望一条线通过所有数据点,错误=0如果你有两个变量的问题,比如x和y,你不应该期望公式类似于z=xa+yb+c而不是y=mx吗?在这种情况下,如果框架将数组{0,4,0}作为输出,这意味着c=0,首先是阈值/偏差,然后是a=4和b=0。