10 #ifndef FUNCTIONALSMOOTHING_H
11 #define FUNCTIONALSMOOTHING_H
14 namespace functional {
24 template<
class KERNEL,
class T=DTYPE>
25 arma::Mat<T> kernelsmoothing (
const arma::Mat<T>& inputs,
26 const arma::Mat<T>& labels,
27 const arma::Mat<T>& pred_inputs,
28 const arma::vec& bandwidths,
31 size_t N = pred_inputs.n_cols;
32 size_t M = labels.n_rows;
34 arma::Mat<T> predictions = arma::zeros<arma::Mat<T>>(M, N);
36 for(
size_t i=0; i<M; i++)
38 arma::Row<T> label = labels.row(i);
41 mlpack::HyperParameterTuner<algo::regression::Kernel<KERNEL>,
44 hpt(valid, inputs, label);
48 std::tie(bandwidth) = hpt.Optimize(bandwidths);
52 smoother.Predict(pred_inputs,temp);
53 predictions.row(i) = temp;
66 template<
class KERNEL,
class T=DTYPE>
67 arma::Mat<T> kernelsmoothing (
const arma::Mat<T>& inputs,
68 const arma::Mat<T>& labels,
69 const arma::Mat<T>& pred_inputs,
70 const double& bandwidth )
72 size_t N = pred_inputs.n_cols;
73 size_t M = labels.n_rows;
75 arma::Mat<T> predictions = arma::zeros<arma::Mat<T>>(M, N);
77 for(
size_t i=0; i<M; i++)
79 arma::Row<T> label = labels.row(i);
84 smoother.Predict(pred_inputs,temp);
85 predictions.row(i) = temp;
98 template<
class KERNEL,
class T=DTYPE>
99 arma::Mat<T> kernelsmoothing (
const arma::Mat<T>& inputs,
100 const arma::Mat<T>& labels,
101 const double& bandwidth )
104 return kernelsmoothing<KERNEL>( inputs,labels,inputs,bandwidth );