mutable
A Database System for Research and Fast Prototyping
Loading...
Searching...
No Matches
LinearModel.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <mutable/mutable-config.hpp>
4#include <Eigen/Core>
5
6
7namespace m {
8
11class M_EXPORT LinearModel {
12private:
13 Eigen::VectorXd coefficients_;
15 std::function<Eigen::MatrixXd(Eigen::MatrixXd)> transformation_;
16 unsigned num_features_;
17
18public:
20 explicit LinearModel(Eigen::VectorXd coefficientVector)
21 : coefficients_(std::move(coefficientVector)), num_features_(coefficients_.rows()) {}
22
25 explicit LinearModel(Eigen::VectorXd coefficientVector, unsigned numFeatures,
26 std::function<Eigen::MatrixXd(Eigen::MatrixXd)> transform_function)
27 : coefficients_(std::move(coefficientVector)), transformation_(std::move(transform_function)),
28 num_features_(numFeatures) {}
29
32 LinearModel(const Eigen::MatrixXd &X, const Eigen::VectorXd &y);
33
37 LinearModel(const Eigen::MatrixXd &X, const Eigen::VectorXd &y,
38 const std::function<Eigen::MatrixXd(Eigen::MatrixXd)> &transform_function);
39
40 double predict_target(const Eigen::RowVectorXd &feature_vector) const;
41
42 Eigen::VectorXd get_coefficients() const { return coefficients_; }
43
44 friend std::ostream & operator<<(std::ostream &out, const LinearModel &linear_model);
45
46 void dump(std::ostream &out) const;
47 void dump() const;
48};
49
50}
51
52
#define X(Kind)
Definition: Operator.hpp:621
A model for predicting the costs of a physical operator.
Definition: LinearModel.hpp:11
unsigned num_features_
number of features this model expects pre-transformation
Definition: LinearModel.hpp:16
Eigen::VectorXd get_coefficients() const
Definition: LinearModel.hpp:42
friend std::ostream & operator<<(std::ostream &out, const LinearModel &linear_model)
LinearModel(Eigen::VectorXd coefficientVector, unsigned numFeatures, std::function< Eigen::MatrixXd(Eigen::MatrixXd)> transform_function)
Create a LinearModel instance given a coefficient vector, a transformation function and the number of...
Definition: LinearModel.hpp:25
std::function< Eigen::MatrixXd(Eigen::MatrixXd)> transformation_
transformation that is applied on the feature matrix
Definition: LinearModel.hpp:15
LinearModel(Eigen::VectorXd coefficientVector)
Create a LinearModel instance given a coefficient vector.
Definition: LinearModel.hpp:20
Eigen::VectorXd coefficients_
vector of coefficients for every feature
Definition: LinearModel.hpp:13
‍mutable namespace
Definition: Backend.hpp:10
STL namespace.