如何用MATLAB求属性约简

如何用MATLAB求属性约简,第1张

#include<iostream>

#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软件实现。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11843310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存