#include<vector>
#include<algorithm>
#include<fstream>
#include<sstream>
#include<string>
#include"Set.h"
#include"Element.h"
using namespace std
#ifndef DecisionTable_H
#define DecisionTable_H
//决策表DT=(U, CUD, V, f)类声明--------------------------------------------------
class DecisionTable
{
public:
static int iNo //用于决策表论域中样本的编号
public:
DecisionTable()
DecisionTable(vector<char> &ConditionSet,
vector<char>&DecisionSet,
vector<Set>&ConditionValueSet,
vector<Set>&DecisionValueSet)//通过条件集值与决策集值创建决策表
DecisionTable(vector<char> &ConditionSet,
vector<char> &DecisionSet,
vector<vector<int>>&ConditionValueSet,
vector<vector<int>>&DecisionValueSet)//通过条件集值与决策集值创建决策表
const DecisionTable&operator=(DecisionTable &DT)//赋值构造函数
DecisionTable(const char* FileName)//由限定格式文件FileName创建决策表
void SaveToFile(const char* FileName)//把决策表保存到文件FileName中,自动生成文件格式
void SetConditionSet(vector<char>&condition)//设置条件属性集
void SetDecisionSet(vector<char>&decision)//设置决策属性集
void SetU(int index, int newU) //把决策表当前位置为index的样本编号设置为newU
vector<int> SetToiVector(Set &s)//把集合转化为向量
vector<char>GetConditionSet()//返回条件属性集
vector<char>GetDecisionSet() //返回决策属性集
vector<Element>GetDT() //返回决策表
Element GetElement(int u) //返回编号为u的样本
int NumberOfElement() //返回决策表DT中的样本数
void AddElement(Element &e) //在决策表后添加样本e
void AddElement(Element &e, bool flag)//当flag=true同AddElement(Element &e),否则添加样本,不自动编号,使用添加样本本身的编号
int FindElement(Element &e)//在决策表中查找样本e,存在则返回样本的编号,不存在返回-1
void RemoveElement(int iNo) //删除决策表DT中的样本号为iNo的第一个样本
DecisionTable RemoveConditionAttribute(const char &c)//删除条件属性集中的属性c构成新的决策表
DecisionTable AddConditionAttribute(const char &c, vector<int>&ValueOfc)//往条件属性集中添加属性c构成新的决策表
DecisionTable SelAttrMakeDT(vector<char>&vec)//按给定的属性集的子集返回决策表
Set ValueSetOfAttribue(const char &a)//返回条件属性a对应的值集
Set POS() //求决策表DT=(U, CUD, V, f)的D的C正区域
bool IsConsistentDecisionTable()//判断决策表是否是一致决策表
double RelyDegreeOfDToC() //计算决策表中D对C的依赖度
double RelyDegreeOfDToAttribute(const char &c)//计算决策表中D对C中的属性c的依赖度
double SigOfAttribute(const char &c) //计算条件属性集中属性c的重要度
vector<char>Core() //求决策表的核集
bool IsIndependentOfConditionSet() //判断决策表的条件属性集是否是独立的
intCountOf(Element &e) //统计样本e在决策表中出现的次数(只是指条件值决策值相同)
intCountOfDecisionValue(vector<int>&decValue)//计算给定决策值decValue出现的次数
DecisionTable GetConsistentSubDT() //分解得到一致决策表
DecisionTable GetNotConsistentSubDT()//分解得到不一致决策表
DecisionTable Unique() //返回决策表不同样本构成的决策表
SetGetM() //获取论文中的近似一致样本编号集
double LooseRelyDegreeOfDToC() //求决策表D对C的松散依赖度
double LooseRelyDegreeOfDToAttribute(const char &c)//求决策表D对属性c的松散依赖度
void Print() //打印决策表
private:
vector<char>ConditionSet
vector<char>DecisionSet
vector<Element>DT
int SerialNumberOfElement
}
#endif
属性约简可以先求核再求约简,约简中某个属性的重要程度是有公式的,属性r相对于属性集Reds的重要性Imp(r)=1- Count(pos Reds(D))/ Count(pos Reds∪{r}(D))我用的是这个公式,可能还有其它的表现形式。count表示正域的势,pos表示正域。可以用java连接sql软件实现。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)