20using VectorXs = Matrix<size_t, Eigen::Dynamic, 1>;
30inline constexpr double TOL = 1e-12;
52 typename T::value_type;
56 -> std::convertible_to<size_t>;
60 -> std::convertible_to<typename T::value_type>;
64 -> std::convertible_to<const typename T::value_type*>;
74const Eigen::VectorXd
ScalarZero = Eigen::VectorXd::Zero(1);
75const Eigen::VectorXd
ScalarOne = Eigen::VectorXd::Ones(1);
82using score_t = std::function<double(
const Eigen::VectorXd &)>;
83using gradient_t = std::function<Eigen::VectorXd(
const Eigen::Ref<const Eigen::VectorXd>&)>;
99inline Eigen::LDLT<Eigen::MatrixXd>
ldltDecomposition(
const Eigen::Ref<const Eigen::MatrixXd> &cov) {
117template <VectorLike V>
118auto asEigen(
const V &v) -> Eigen::Map<const Eigen::Matrix<typename V::value_type, Eigen::Dynamic, 1>> {
119 using T =
typename V::value_type;
120 return Eigen::Map<const Eigen::Matrix<T, Eigen::Dynamic, 1>>(v.data(),
static_cast<Eigen::Index
>(v.size()));
130template <VectorLike V>
131auto asEigen(V &v) -> Eigen::Map<Eigen::Matrix<typename V::value_type, Eigen::Dynamic, 1>> {
132 using T =
typename V::value_type;
133 return Eigen::Map<Eigen::Matrix<T, Eigen::Dynamic, 1>>(v.data(),
static_cast<Eigen::Index
>(v.size()));
143template <VectorLike V>
145 using T =
typename V::value_type;
146 return Eigen::Map<const Eigen::Matrix<T, Eigen::Dynamic, 1>>(v.data(),
static_cast<Eigen::Index
>(v.size()));
156template <VectorLike V>
157auto toStdVector(
const V &v) -> std::vector<typename V::value_type> {
158 using T =
typename V::value_type;
159 return std::vector<T>(v.begin(), v.end());
177template<
typename Derived>
179 typename Derived::PlainObject result(indices.size(), mat.cols());
180 for(Eigen::Index i = 0; i < indices.size(); ++i) {
181 result.row(i) = mat.row(indices(i));
194template<
typename DerivedX,
typename DerivedY>
195auto trainTestSplit(
const Eigen::MatrixBase<DerivedX>& xObs,
const Eigen::MatrixBase<DerivedY>& yObs,
const std::pair<Eigen::VectorXs, Eigen::VectorXs>& train_test_pair) {
196 auto xTrain =
slice(xObs, train_test_pair.first);
197 auto yTrain =
slice(yObs, train_test_pair.first);
198 auto xTest =
slice(xObs, train_test_pair.second);
199 auto yTest =
slice(yObs, train_test_pair.second);
200 return std::make_tuple(xTrain, yTrain, xTest, yTest);
Concept for compile-time validation of vector-like containers.
Definition cmp_defines.h:51
Definition cmp_defines.h:19
Matrix< size_t, Eigen::Dynamic, 1 > VectorXs
Definition cmp_defines.h:20
Definition classifier.h:17
constexpr double TOL
Definition cmp_defines.h:30
auto toEigen(const V &v) -> Eigen::VectorXd
Copies the elements of a vector-like container to a new Eigen::VectorXd.
Definition cmp_defines.h:144
const Eigen::VectorXd ScalarOne
Definition cmp_defines.h:75
const Eigen::VectorXd DummyVector(0)
std::function< double(const Eigen::VectorXd &)> score_t
The score_t type A function that takes a const reference to an Eigen::VectorXd and returns a double A...
Definition cmp_defines.h:82
const Eigen::MatrixXd DummyMatrix(0, 0)
auto toStdVector(const V &v) -> std::vector< typename V::value_type >
Copies the elements of a vector-like container to a new std::vector.
Definition cmp_defines.h:157
auto trainTestSplit(const Eigen::MatrixBase< DerivedX > &xObs, const Eigen::MatrixBase< DerivedY > &yObs, const std::pair< Eigen::VectorXs, Eigen::VectorXs > &train_test_pair)
Function to split training data into training and test sets.
Definition cmp_defines.h:195
Eigen::LDLT< Eigen::MatrixXd > ldltDecomposition(const Eigen::Ref< const Eigen::MatrixXd > &cov)
Computes the LDLT decomposition of a symmetric matrix.
Definition cmp_defines.h:99
Derived::PlainObject slice(const Eigen::MatrixBase< Derived > &mat, const Eigen::VectorXs &indices)
Slices a matrix along its rows based on a set of indices.
Definition cmp_defines.h:178
const Eigen::VectorXd ScalarZero
Definition cmp_defines.h:74
auto asEigen(const V &v) -> Eigen::Map< const Eigen::Matrix< typename V::value_type, Eigen::Dynamic, 1 > >
Creates a non-owning, read-only Eigen view (Eigen::Map) of a vector-like container.
Definition cmp_defines.h:118
std::function< Eigen::VectorXd(const Eigen::Ref< const Eigen::VectorXd > &)> gradient_t
Definition cmp_defines.h:83