132 lines
3.5 KiB
C++
132 lines
3.5 KiB
C++
/*
|
|
LA: linear algebra C++ interface library
|
|
Kernel ridge regression module Copyright (C) 2024
|
|
Pavel Florian <florian43@seznam.cz> and Jiri Pittner <jiri.pittner@jh-inst.cas.cz> or <jiri@pittnerovi.com>
|
|
|
|
This program is free software: you can redistribute it and/or modify
|
|
it under the terms of the GNU General Public License as published by
|
|
the Free Software Foundation, either version 3 of the License, or
|
|
(at your option) any later version.
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
GNU General Public License for more details.
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
|
|
|
|
#include "reg.h"
|
|
|
|
using namespace std;
|
|
using namespace LA;
|
|
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
// unsigned int i;
|
|
|
|
double x;
|
|
double y;
|
|
bool end = false;
|
|
string user_input;
|
|
string model_x = "reg_test_x.csv";
|
|
string model_y = "reg_test_y.csv";
|
|
string model_p = "reg_test_p.csv";
|
|
REG<double> reg(model_x, model_y, model_p);
|
|
/*
|
|
double* reference_value;
|
|
double* score;
|
|
double RMSE;
|
|
double Loss;
|
|
double* params;
|
|
double* weights;
|
|
string kernel;
|
|
|
|
reference_value = new double[1];
|
|
score = new double[1];
|
|
params = new double[4];
|
|
weights = new double[451];
|
|
|
|
reference_value[0] = 1.00;
|
|
*/
|
|
// creating model
|
|
// fitting model
|
|
reg.REG_Fit(0.0, 20);
|
|
//reg.REG_Fit_grad(0.1, 50, 0.2);
|
|
// get predictions
|
|
|
|
cout << "Program for testing regression model \n" << endl;
|
|
/*
|
|
reg.REG_Get_weight_coeff(weights);
|
|
cout << "The weight coefficients are: " << kernel << endl;
|
|
for (i = 0; i < 451; i++)
|
|
cout << weights[i] << endl;
|
|
*/
|
|
while (not end)
|
|
{
|
|
cout << "Please enter the x value or y to end \n" << endl;
|
|
cin >> user_input;
|
|
if (user_input == "y")
|
|
{
|
|
end = true;
|
|
break;
|
|
}
|
|
x = stod(user_input);
|
|
|
|
reg.REG_Get_predictions(&x, &y, 1);
|
|
cout << "The model prediction is: " << y << endl;
|
|
/*
|
|
reg.REG_Get_Score(&x, &y, 1, reference_value, score);
|
|
cout << "The model prediction is: " << y << endl;
|
|
cout << "The reference value is: " << reference_value[0] << endl;
|
|
cout << "The score is: " << score[0] << endl;
|
|
|
|
RMSE = reg.REG_RMSE();
|
|
Loss = reg.Loss_Function();
|
|
cout << "The RMSE is: " << RMSE << endl;
|
|
cout << "The Loss is: " << Loss << endl;
|
|
|
|
reg.REG_Get_params(params, &kernel);
|
|
cout << "The parameters of model are: " << endl;
|
|
for (i = 0; i < 4; i++)
|
|
cout << "param: " << params[i] << endl;
|
|
|
|
cout << "The type of kernel is: " << kernel << endl;
|
|
cout << endl;
|
|
|
|
params[0] = 0;
|
|
kernel = "Gaussian";
|
|
reg.REG_Set_params(params, kernel);
|
|
|
|
reg.REG_Get_params(params, &kernel);
|
|
cout << "The new parameters o model are: " << RMSE << endl;
|
|
for (i = 0; i < 4; i++)
|
|
cout << "param: " << params[i] << endl;
|
|
|
|
cout << "The new type of kernel is: " << kernel << endl;
|
|
cout << endl;
|
|
*/
|
|
}
|
|
/*reg.REG_Save_fitted("reg_test_m.csv");
|
|
reg.REG_Load_fitted("reg_test_m.csv");
|
|
end = false;
|
|
while (not end)
|
|
{
|
|
cout << "Please enter the x value or y to end \n" << endl;
|
|
cin >> user_input;
|
|
if (user_input == "y")
|
|
{
|
|
end = true;
|
|
break;
|
|
}
|
|
x = stod(user_input);
|
|
reg.REG_Get_predictions(&x, &y, 1);
|
|
cout << "The model prediction is: " << y << endl;
|
|
}*/
|
|
return(0);
|
|
};
|