Esempio n. 1
0
 Label posterior(const Eigen::DenseBase<Derived>& observations,
                 bool normalize = true) const {
   assert(observations.cols() == num_features());
   Label result = prior_;
   for (std::size_t i = 0; i < num_features(); ++i) {
     result *= feature(i).restrict_head(observations.col(i));
     if (normalize) {
       result.normalize();
     }
   }
   return result;
 }
Esempio n. 2
0
// The number of training examples should always be a positive integer.
int DataNormalized::FeatureNormalize() {
  const int kNumFeatures = num_features();
  assert(kNumFeatures >= 1);
  const int kNumTrainEx = num_train_ex();
  assert(kNumTrainEx >= 1);

  // Does not include dummy feature when normalizing.
  const arma::mat kTrainingFeaturesNoDummy = \
    training_features().cols(1,kNumFeatures);

  const arma::vec mu_vec = \
    arma::mean(kTrainingFeaturesNoDummy.cols(0,kNumFeatures-1)).t();
  set_mu_vec(mu_vec);
  const arma::vec sigma_vec = \
    arma::stddev(kTrainingFeaturesNoDummy.cols(0,kNumFeatures-1)).t();
  set_sigma_vec(sigma_vec);
  arma::mat kTrainingFeaturesNoDummyNormalized = \
    arma::zeros<arma::mat>(kNumTrainEx,kNumFeatures);
  for(int row_index=0; row_index<kNumTrainEx;row_index++) {
    kTrainingFeaturesNoDummyNormalized.row(row_index) = \
      (kTrainingFeaturesNoDummy.row(row_index)-mu_vec.t())/sigma_vec.t();
  }

  // Appends dummy feature to normalized data, since normalized data will be
  // used for linear regression.
  const arma::mat kTrainingFeaturesNormalized = \
    arma::join_horiz(arma::ones<arma::vec>(kNumTrainEx),\
      kTrainingFeaturesNoDummyNormalized);
  set_training_features_normalized(kTrainingFeaturesNormalized);

  return 0;
}
Esempio n. 3
0
// The number of training features should always be a positive integer.
// The number of training examples should always be a positive integer.
int DataUnlabeledNormalized::FeatureNormalize() {
  const int kNumFeatures = num_features();
  assert(kNumFeatures >= 1);
  const int kNumTrainEx = num_train_ex();
  assert(kNumTrainEx >= 1);

  const arma::vec mu_vec = \
    arma::mean(training_features().cols(0,kNumFeatures-1)).t();
  set_mu_vec(mu_vec);
  const arma::vec sigma_vec = \
    arma::stddev(training_features().cols(0,kNumFeatures-1)).t();
  set_sigma_vec(sigma_vec);
  arma::mat kTrainingFeaturesNormalized = \
    arma::zeros<arma::mat>(kNumTrainEx,kNumFeatures);
  for(int row_index=0; row_index<kNumTrainEx;row_index++) {
    kTrainingFeaturesNormalized.row(row_index) = \
      (training_features().row(row_index)-mu_vec.t())/sigma_vec.t();
  }
  set_training_features_normalized(kTrainingFeaturesNormalized);

  return 0;
}