使用Math.Net进行多元多项式回归

时间:2019-03-11 22:53:06

标签: c# matlab mathnet

我想为2和8输入1输出数据集创建一个二次多项式。

我已经在Matlab中编写了以下代码来执行该操作:

function [Coeff,R2,RMSE] = MultiLineRegression(x_var,y_var)

    % This function carries out multivariate polynomial regression (MPR) analysis.

    % The following stages are matrix manipulation to find the coefficients of
    % the polynomial equation.    
    [n, p] = size(x_var);

    nv = p;
    np = 2;

    k = nv*np;

    B = repmat(eye(nv),np,1);

    F = (1:1:np);
    FT = transpose(F);
    FTT = zeros(k,1);

    for i=1:nv;
        for j=1:np;
            FTT(i+(j-1)*nv)= FT(j);
        end;
    end;

    for i = 1:k;
        for j=1:nv;
            power_f(i,j) = B(i,j)*FTT(i);
        end;
    end;

    for i = 1:nv;
        power_f(k+1,i) = 0;
    end;

    nt = size(power_f,1);

    M = ones(n,nt);
    for i = 1:nt;
        for j = 1:p;
            M(:,i) = M(:,i).*x_var(:,j).^power_f(i,j);
        end;
    end;

    Coeff = M\y_var;
    y_calc = M *Coeff(:);

    % Outputs coefficents which are in the order of x then x^2 with the last
    % coefficent being the error

    Coeff_fact = transpose(Coeff);

    s_var = norm(y_var - y_calc);

    R2 = 1 - (s_var/norm(y_var-mean(y_var)))^2;

    RMSE = sqrt(mean((y_var - y_calc).^2));

我已经创建了输入矩阵和输出矢量,但是在尝试寻找repmateye的等效函数时遇到了麻烦。我正在尝试使用Math.net,因为我以前设法使用此程序包创建了平面拟合算法。

如果有人能够指出正确的方向,甚至是已经执行此任务的代码,也将不胜感激。

0 个答案:

没有答案
相关问题