📄 zssentropyscaler.h
字号:
// ZssEntropyScaler.h: interface for the CZssEntropyScaler class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_ZSSENTROPYSCALER_H__74E15F4D_20EC_4B7E_8E52_5F8D90F3AE7A__INCLUDED_)
#define AFX_ZSSENTROPYSCALER_H__74E15F4D_20EC_4B7E_8E52_5F8D90F3AE7A__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "ZssScaler.h"
class CZssEntropyScaler : public CZssScaler
{
private:
typedef struct
{
double d_value;//属性值
int i_num;//该属性值出现次数
}TAGSTATINFO;
public:
BOOL EntropyScaler(CString str_s_file, CString str_d_file);
CZssEntropyScaler();
virtual ~CZssEntropyScaler();
void AddToArray(double d_val,CArray<TAGSTATINFO,TAGSTATINFO>&statinfo);
//将一个属性值加入到统计信息的数组中在加入的过程中已经排序(从小到大)
private:
void GetStatInfo(int i_attr, CArray<TAGSTATINFO,TAGSTATINFO> &statinfo, FILE *pfile, fpos_t file_pos);
//得到一个指定属性的统计信息即属性的值和该属性值出现的次数
//i_attr:是第几个属性
//statinfo:保存统计信息
void GetBreakPoint_InNonStrAttr(CArray<float,float> &breakpoint_array,CArray<TAGSTATINFO,TAGSTATINFO> &statinfo,
int low, int high);//基于信息熵来求断点,采用递归的方法来求
float GetEntopy(CArray<TAGSTATINFO,TAGSTATINFO> &statinfo, int i_break,int low, int high, int total);
//计算信息以i_break位置为断点时的信息熵值
BOOL CanStop(CArray<TAGSTATINFO,TAGSTATINFO> &statinfo,int i_break,int low, int high);
//看是否满足递归停止条件(stop criteria)
int GetTotal(CArray<TAGSTATINFO,TAGSTATINFO> &statinfo, int low, int high);
//计算实例个数
float GetEnt(CArray<TAGSTATINFO,TAGSTATINFO> &statinfo, int low, int high,int total);
//计算Ent(熵)
};
#endif // !defined(AFX_ZSSENTROPYSCALER_H__74E15F4D_20EC_4B7E_8E52_5F8D90F3AE7A__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -