eis/eqpalg/.do_not_use/distribution/frame.h

95 lines
2.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* @file eqpalg/distribution/frame.h
* @brief 分布类型的数据处理框架
* @author Cat (null.null.null@qq.com)
* @version 0.1
* @date 2021-08-21
*
* Copyright: Baosight Co. Ltd.
* DO NOT COPY/USE WITHOUT PERMISSION
*
*/
#pragma once
#include "mix_cc/algorithm/is_in_range.h"
#include "mix_cc/algorithm/split.h"
#include "mix_cc/exception.h"
#include <dlib/statistics.h>
#include <eqpalg/define/dlib.h>
#include <eqpalg/distribution/data_mapping.h>
#include <eqpalg/distribution/dist.h>
#include <log4cplus/LOG.h>
#include <algorithm>
#include <tuple>
#include <vector>
namespace distribution {
class Frame {
public:
static constexpr double legal_diff = 0.3; ///< 默认的合法差值30%
static constexpr double normal_skewness =
0; ///< 近似正态分布容许的偏度偏离范围
static constexpr double normal_ex_k = 0; ///< 近似正态分布的超值峰度偏离范文
protected:
const std::unique_ptr<LOG> logger_;
const std::string rule_id_;
const size_t dims_;
public:
/**
* @brief Construct a new Frame object
* @param ruleId My Param doc
*/
Frame(const std::string& ruleId, size_t dims);
/**
* @brief 初始化接受阈
* @param prob My Param doc
* @return int
*/
int init_prob(double prob);
/**
* @brief 自动探测数据分布类型
* @return int
*/
int auto_detect_distribution(Rs rs, const SampleWindow& tmp_data);
/**
* @brief 得到合理分布区间
* @return mix_cc::float_range_t
*/
small_vector<mix_cc::float_range_t, 3> get_range();
/**
* @brief 是否是指定类型的分布
* @return true
* @return false
*/
bool is_distribution_valid();
/**
* @brief 是否数据经过变换/映射
* @return true
* @return false
*/
bool is_transformed();
protected:
small_vector<Dist, 3> dist_; ///< 分布情况和合理上下限
protected:
double prob_; ///< 接受区间0~1)
small_vector<mix_cc::float_range_t, 3> legal_range_; ///< 合法数值的上下限
bool valid = true; ///< 是否有效
protected:
bool
is_transformed_; ///< 数据是否因不满足正态分布而被映射作用区间,暂时不适用
DataMapping data_mapping_; ///< 用于数据映射的类,暂时不使用
};
} // namespace distribution