📄 attentropyreduce.h
字号:
// AttEntropyReduce.h: interface for the CAttEntropyReduce class.
//
//////////////////////////////////////////////////////////////////////
#include "stdio.h"
#include "shareclass.h"
#if !defined(AFX_ATTENTROPYREDUCE_H__7086BAE5_2427_11D5_8B35_0080C8E222A1__INCLUDED_)
#define AFX_ATTENTROPYREDUCE_H__7086BAE5_2427_11D5_8B35_0080C8E222A1__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CAttEntropyReduce
{
public:
CAttEntropyReduce();
// Implementation
public:
static int iTempFileNum; //临时文件的编号
int pAttReduce;
bool bBlock; //是否有block
int iBlockNum; //block的数目
char*** pBlockTable; //放block的表
struct WCutRecord* struWCutRecord; //放置断点的链表的入口
bool bCuts; //是否有断点
bool bSaveTempResult; //是否保存临时结果
static CString strFileName; //保存的文件名
int** pIntTable; //整型表
char** pAttName; //属性名
int iInteger; //整形数的列数
int iRecordNum; //记录数
int iAttNum; //条件属性个数
int iStage; //处理的阶段
char cStyle[10]; //文件类型
char** pDataType; //数据类型
bool GetData(char* FileName);
//从文件中读取相关信息,包括记录数,属性名,属性类型,断点值以及决策表值
bool SetCutResult(FILE* fp);//将断点读入到CutRecord结构中
bool SetIntegerTable(FILE *fp,int column, int row);
//将整形值读入到pIntTable中
bool SetDataType(FILE* fp,int count);//将数据类型读入pDataType中
bool SetAttName(FILE* fp,int count);//将属性名称读入pAttName中
void FreeContent(); //释放所有可能分配了的内存
public:
int **info; //原始表,以转化为int。二维指针
int con_num; //条件属性数
int rec_num; //记录对象数
int element; //可辩识(决策)矩阵中的元素个数
int ** array; //可辩识(决策)矩阵的指针
int reduct_num; //共有几组属性约简结果
int redu_att_num; //约简后的核属性数
int redu_num; //约简后的条件属性个数 非核属性数目
int red_dec_num; //决策属性数
int result_num;//最终的约简结果属性的数目
int *reductset; //约简核属性集(数字式)
int *attreductset;//约简条件属性集
int *decreductset; //约简后的决策属性集。
int *resultset; //约简结果
int *attallreductset;
int *attreducttemset;
int *attreductsetxu;
int ** result; //约简结果
char *** reduct_att; //属性约简后的条件属性集
//////////////////////////////////
// 添加的内容
//////////////////////////////////
int **IND_Attrb;//决策表进行划分,结果保存在IND_Attrb中
int IND_Order;//IND_Order表示划分成的集合的个数
int IND_MaxNum;//IND_MaxNum表示所有集合中
//元素最多的集合所包含的元素的个数
public:
void InitTable(); //把字符型表转化为int类型
//建立可辨识矩阵与array中,其中不保存重复的属性组合,也没有
//保存该属性组合是属于哪两个记录的,并且对于每个属性组合只保
//留了前两个使他们不同的属性,因为计算核属性既是只有一个属性
//能区分这两个记录的属性,所以不用全部记录下来
//array[i][0]保存的是第i个属性组合的个数(不是1就是2)
int Create_Array(); //建立可辨识矩阵或决策矩阵
//根据互信息选择最终的属性集
bool Reduct_Table();//计算属性组合
//初步简化决策表,删除多余的行,把简化后的决策表保存在info中
bool Get_Att(int ** att,int num);//将pAttName 拷贝到reduct_att中
int Create_Table();
void SelectSort(int * att); //用选择法对约简后的属性重新排列,对数组att中的元素按从小到大排序
bool SaveFile(char* pFileName);//是否要进行存档
// Construction
////////////////添加的部分内容////////
//////////////////////////////////////
//根据属性集合b对决策表进行划分,B表示属性集合b的元素个数,rownum表示要划分的记录的个数
//划分结果保存在IND_Attrb中,IND_Order表示划分成的集合的个数,IND_MaxNum表示所有集合中
//元素最多的集合所包含的元素的个数
void IND(int *b, int B, int rownum);//划分
//IND_Attrb中的第i个集合与Y中第j个集合交集的元素个数
int YX_Jiao(int j, int i, int **IND_Y );//Yj与Xi交的个数
//计算属性集p相对于属性集q的条件熵,Q和P分别保存了集合q和p的元素个数
double Entropy(int *q , int Q,int *p ,int P);//H(q|p)
// Attributes
public:
// Operations
public:
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CReduct)
//}}AFX_VIRTUAL
// Implementation
public:
bool AttEntropyReduce(); //具体执行约简的函数
int nSelected;
protected:
// Generated message map functions
public:
//{{AFX_MSG(CRoughsetDoc)
// NOTE - the ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_MSG
virtual ~CAttEntropyReduce();
};
#endif // !defined(AFX_ATTENTROPYREDUCE_H__7086BAE5_2427_11D5_8B35_0080C8E222A1__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -