Conscience Core
CscSupervisedLearningRegression.h
Go to the documentation of this file.
1 /*
2  * CscSupervisedLearningRegression.h
3  *
4  * Created on: 28 Juin 2023
5  * Author: Max Lhermitte
6  */
7 
8 #ifndef CscSupervisedLearningRegression_h
9 #define CscSupervisedLearningRegression_h
10 
11 #include "CscCommon.h"
12 #include <Eigen/Dense>
13 #include <fstream>
14 #include <iostream>
15 using std::vector, std::string;
16 
18 public:
20  public:
21  vector<vector<float>> data;
22  const vector<string> namesVar;
23 
24  RegressionInputsData(vector<vector<float>> data, vector<string> namesVar) : data(data),
25  namesVar(namesVar) {
26  }
27  vector<vector<float>> getInputsData() const {
28  return data;
29  }
30  vector<string> getNamesVar() const {
31  return namesVar;
32  }
33  void addInputsData(vector<float> dataToAdd) {
34  data.push_back(dataToAdd);
35  }
36  };
37 
39  public:
40  double r2; // coefficient of dertermination
41  vector<float> polynomialCoefficients;
42 
43  RegressionOutputsData(double r2, vector<float> polynomialCoefficients) : r2(r2),
44  polynomialCoefficients(polynomialCoefficients) {
45  }
46  };
47 
48  CscSupervisedLearningRegression(RegressionInputsData regressionInputsData);
49 
68  RegressionOutputsData polynomialRegression(const int degree, bool dataToCsv = false);
69 
81  RegressionOutputsData bestDegreePolynomialRegression(bool saveToCsv = false);
82 
99  static float findMaxLocal(const vector<float> &coeffPolynomial, float minBounding, float maxBounding, float precision);
100 
101 private:
102  RegressionInputsData regressionInputsData;
103 
123  static Eigen::MatrixXf polyTransform(const Eigen::MatrixXf &data, int degree);
124 
136  static double calculCoefOfDetermination(const Eigen::MatrixXf &inputs, const Eigen::MatrixXf &response);
137 
149  void saveToCsv(const string &filename);
150 
151  unique_ptr<CscLogger> logger = CscLogger::getForCategory("CscSupervisedLearningRegression");
152 };
153 
154 #endif
CscSupervisedLearningRegression::RegressionOutputsData::polynomialCoefficients
vector< float > polynomialCoefficients
Definition: CscSupervisedLearningRegression.h:41
CscSupervisedLearningRegression
Definition: CscSupervisedLearningRegression.h:17
CSC_DLL_IMPORTEXPORT
#define CSC_DLL_IMPORTEXPORT
Definition: os.h:31
CscSupervisedLearningRegression::RegressionOutputsData::r2
double r2
Definition: CscSupervisedLearningRegression.h:40
CscSupervisedLearningRegression::RegressionInputsData
Definition: CscSupervisedLearningRegression.h:19
CscSupervisedLearningRegression::RegressionOutputsData
Definition: CscSupervisedLearningRegression.h:38
CscSupervisedLearningRegression::RegressionInputsData::getInputsData
vector< vector< float > > getInputsData() const
Definition: CscSupervisedLearningRegression.h:27
CscSupervisedLearningRegression::RegressionInputsData::getNamesVar
vector< string > getNamesVar() const
Definition: CscSupervisedLearningRegression.h:30
logger
static std::unique_ptr< CscLogger > logger
Definition: gltfHelpers.cpp:6
CscSupervisedLearningRegression::RegressionInputsData::data
vector< vector< float > > data
Definition: CscSupervisedLearningRegression.h:21
CscSupervisedLearningRegression::RegressionOutputsData::RegressionOutputsData
RegressionOutputsData(double r2, vector< float > polynomialCoefficients)
Definition: CscSupervisedLearningRegression.h:43
CscCommon.h
CscSupervisedLearningRegression::RegressionInputsData::RegressionInputsData
RegressionInputsData(vector< vector< float >> data, vector< string > namesVar)
Definition: CscSupervisedLearningRegression.h:24
CscSupervisedLearningRegression::RegressionInputsData::namesVar
const vector< string > namesVar
Definition: CscSupervisedLearningRegression.h:22
CscSupervisedLearningRegression::RegressionInputsData::addInputsData
void addInputsData(vector< float > dataToAdd)
Definition: CscSupervisedLearningRegression.h:33