HDIM  1.0.0
Packages for High Dimensional Linear Regression
fos_js.hpp
1 #ifndef FOS_JS_HPP
2 #define FOS_JS_HPP
3 
4 // C System-Headers
5 //
6 // C++ System headers
7 #include <vector>
8 // Eigen Headers
9 //
10 // Boost Headers
11 //
12 // Project Specific Headers
13 #include "../FOS/x_fos.hpp"
14 
15 template < typename T >
16 class JS_FOS : public hdim::X_FOS<T> {
17 
18  public:
19 
27  void operator()( std::vector<T>& X_vectorized,
28  std::vector<T>& Y,
29  std::string solver_type );
30 
31  T ReturnLambda();
32  T ReturnIntercept();
33  unsigned int ReturnOptimIndex();
34  std::vector<T> ReturnCoefficients();
35  std::vector<int> ReturnSupport();
36 
37 };
38 
39 template < typename T >
40 void JS_FOS< T >::operator()( std::vector<T>& X_vectorized,
41  std::vector<T>& Y,
42  std::string solver_type ) {
43 
44  (void)solver_type;
45 
46  unsigned int n = Y.size();
47  unsigned int p = X_vectorized.size() / n ;
48 
49 
50  Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > X_eigen = Eigen::Map< Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic, Eigen::RowMajor> >( X_vectorized.data(), n, p );
51  Eigen::Matrix< T, Eigen::Dynamic, 1 > Y_eigen = Eigen::Map< Eigen::Matrix< T, Eigen::Dynamic, 1 > >( Y.data(), Y.size() );
52 
53  return hdim::X_FOS<T>::operator ()( X_eigen,
54  Y_eigen,
55  hdim::SolverType::cd );
56 
57 }
58 
59 
60 template < typename T >
63 }
64 
65 template < typename T >
66 unsigned int JS_FOS< T >::ReturnOptimIndex() {
68 }
69 
70 template < typename T >
73 }
74 
75 template < typename T >
76 std::vector<T> JS_FOS< T >::ReturnCoefficients() {
77 
78  Eigen::Matrix<T, Eigen::Dynamic, 1 > fos_coefs = hdim::X_FOS<T>::ReturnCoefficients();
79  return std::vector<T> (fos_coefs.data(), fos_coefs.data() + fos_coefs.rows() * fos_coefs.cols());
80 
81 }
82 
83 template < typename T >
84 std::vector<int> JS_FOS<T>::ReturnSupport() {
85 
86  Eigen::Matrix<int, Eigen::Dynamic, 1 > fos_support = hdim::X_FOS<T>::ReturnSupport();
87  return std::vector<int> (fos_support.data(), fos_support.data() + fos_support.rows() * fos_support.cols());
88 
89 }
90 #endif // FOS_JS_HPP
void operator()(std::vector< T > &X_vectorized, std::vector< T > &Y, std::string solver_type)
Run the main JS_FOS algorithm.
Definition: fos_js.hpp:40
void operator()(const Eigen::Matrix< T, Eigen::Dynamic, Eigen::Dynamic > &x, const Eigen::Matrix< T, Eigen::Dynamic, 1 > &y, SolverType s_type=SolverType::ista)
Run the main X_FOS algorithm.
Definition: x_fos.hpp:399
The FOS algorithim.
Definition: x_fos.hpp:36