Многомерная полиномиальная регрессия с использованием Math.Net - PullRequest
0 голосов
/ 12 марта 2019

Я хотел бы создать квадратичный полином для набора данных и набора выходных данных 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));

Я создал свою матрицу ввода и вектор вывода, но застрял, пытаясь найти эквивалентные функции для repmat и eye.Я пытаюсь использовать Math.net, так как ранее мне удалось создать алгоритм подгонки плоскости с помощью этого пакета.

Если кто-нибудь сможет указать мне правильное направление или даже код, который уже выполняет эту задачу,будет принята с благодарностью.

...