45 lines
1.3 KiB
C++
45 lines
1.3 KiB
C++
#include <eqpalg/utility/normalize.h>
|
|
|
|
namespace utility {
|
|
int normalize_min_max(std::vector<double>* vec_ptr,
|
|
dlib::running_stats<double> rs) {
|
|
double base = rs.min();
|
|
double top = rs.max();
|
|
double diff = top - base;
|
|
std::for_each(vec_ptr->begin(), vec_ptr->end(),
|
|
[&](double& value) { value = (value - base) / diff; });
|
|
return 0;
|
|
}
|
|
|
|
int normalize_z_score(std::vector<double>* vec_ptr,
|
|
dlib::running_stats<double> rs) {
|
|
double mean = rs.mean();
|
|
double stddev = rs.stddev();
|
|
std::for_each(vec_ptr->begin(), vec_ptr->end(),
|
|
[&](double& value) { value = (value - mean) / stddev; });
|
|
return 0;
|
|
}
|
|
|
|
double normalize_min_max(double x, dlib::running_stats<double> rs) {
|
|
double base = rs.min();
|
|
double top = rs.max();
|
|
double diff = top - base;
|
|
return (x - base) / diff;
|
|
}
|
|
|
|
double normalize_z_score(double x, dlib::running_stats<double> rs) {
|
|
return (x - rs.mean()) / rs.stddev();
|
|
}
|
|
|
|
double denormalize_z_score(double invert_x, dlib::running_stats<double> rs) {
|
|
return (invert_x * rs.stddev()) + rs.mean();
|
|
}
|
|
|
|
double denormalize_min_max(double invert_x, dlib::running_stats<double> rs) {
|
|
double base = rs.min();
|
|
double top = rs.max();
|
|
double diff = top - base;
|
|
return (invert_x * diff) + base;
|
|
}
|
|
} // namespace utility
|