Я хотел бы создать квадратичный полином для набора данных и набора выходных данных 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, так как ранее мне удалось создать алгоритм подгонки плоскости с помощью этого пакета.
Если кто-нибудь сможет указать мне правильное направление или даже код, который уже выполняет эту задачу,будет принята с благодарностью.