📄 skowron.h
字号:
// Skowron.h: interface for the CSkowron class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_SKOWRON_H__B2B08801_0034_11D4_9208_0080C8E21834__INCLUDED_)
#define AFX_SKOWRON_H__B2B08801_0034_11D4_9208_0080C8E21834__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CSkowron// skowron算法的原代码
{
public:
struct CutRecord
{
int iColumn;
int iCuts;
char** cpCut;
CutRecord* p;
};
struct Attnum
{
int attribute;
int num;
};
struct Point //表示属性组合
{
int attribute;
Point* p;
};
struct Defaultrules //最终的规则
{
int serial; //规则的序号
int* rule; //规则的属性值和决策值
float reliability; //可信度
int totalnum; //规则条件属性覆盖的总样本数
int coveragenum; //规则覆盖的样本数
Defaultrules* p;
};
struct Blockrules //封锁事实
{
int* rule; //规则的属性值
int serial; //封锁规则的序号
Blockrules* p; //block的规则号
};
struct Rules //对矩阵中每一行所产生的规则的表示
{
int* rule;
Rules* p;
};
struct Cutline//可辨识矩阵相异属性集的集合
{
int x;//x,y坐标
int y;
Cutline* p;
};
struct Cuttree//?
{
int* cut;
Cuttree* p;
};
struct Defaultline
{
Attnum* line;
Defaultline* p;
};
struct Conflictline//冲突样例
{
int* m_Conflict;
Conflictline* p;
};
struct Cell //矩阵中的每一格,即一个单元
{
int nattribute; //不同的属性值个数
int serial;
int* m_p;
};
struct Object
{
int m_iSerial; //序号
int* m_pRec; //记录表(包括决策值)
int count; //重复个数
Object* p; //指向结构Object的指针
};
public:
bool Judge_core(int i, int j, Cell** m_Matrix, int *del_core);
//判断矩阵i行j列元素是否为核属性,用叶东毅的方法,del_core为已经删除的属性
void compute_coreAtt(int *del,int* &core);
void compute_totalnum_coveragenum(Rules *m_pr, int n, Defaultrules *&m_pd);
double CountCut();
int abtcount;//约简的属性和
int *abt;//约简属性的列号
char** pAttName;
char** pDataType;
BOOL bCuts;
struct CutRecord* struCutRecord;
void SaveFile(LPCTSTR lpszPathName);
int cutline;
int block;
int serial;
int rulenum;//规则的个数
int callnum;//递归的层数
Blockrules* m_pBlockrules;
Defaultrules* m_pDefaultrules;
Cuttree* m_Cuttree;
Cuttree* m_Cuttree1;
Defaultrules* m_pd1;
Defaultrules* m_pd2;
Defaultrules* m_pd3;
Blockrules* m_pb1;
Blockrules* m_pb2;
Blockrules* m_pb3;
Defaultrules* m_pTempDefault;
Blockrules* m_pTempBlock;
// Point* m_pPoint;
Rules* m_pRules;
Cell** pMatrix;
int iMatrixLine; //除去冲突后的分类数
int* piConflict; //记录决策表中的冲突情况
int iAttNum; //条件属性个数
int iRecordNum; //记录条数
int** pIntTable;
Object* pSheet;
int iClassNum; //根据条件属性和决策属性得到的分类数
float fAlpha;
// int cut; //阈值
bool T;//为1表示为标准skownon算法;为0表示自主式学习算法
CSkowron();
virtual ~CSkowron();
BOOL SkowronArithmetic();
void RulesJudge(int n,int cut,int* m_pCut,int* m_Conlfict);
void Projection(Cell** m_Matrix,int* m_pConflict,int cut,int* tempcut);
void DefaultRule(Cell* m_pRecord,Point* m_pPoint,bool T);
BOOL CreateMatrix();
BOOL FindConflict();
BOOL InitTable();//*
void ChangeString();//输出规则前用断点代表的连续值替换离散值
BOOL SetDataType(FILE *fp, int count);
BOOL SetAttName(FILE* fp, int count);//设置属性名称
BOOL SetStringTable(FILE* fp, int column, int row);//以字符串的形式读入决策表数据
BOOL OpenFile(LPCTSTR lpszPathName);
char cStyle[10];
int iStage;
BOOL SetIntegerTable(int column,int row);
BOOL SetCutResult(FILE* fp);
int iStringRow;
int iStringCol;
char*** pStringTable;
void DeleteContents();
};
#endif // !defined(AFX_SKOWRON_H__B2B08801_0034_11D4_9208_0080C8E21834__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -