资源简介
粗糙集约简算法的简单matlab实现,应用在matlab上,可以实现。
代码片段和文件信息
function [redSetsigSet] = reduceSet(dataArraylammdasig_ctrl)
% 该程序为邻域粗糙集的约简计算
% 输入dataArray 数值型决策系统,最后一列为决策属性
% 输入lammda计算邻域半径时的参数,delta=std(dataArray)/lammda
% lammda 注意!在这里计算的lammda和胡清华程序的lammda有区别
% 这里lammda取值尽量在0.5~1.5之间,如果太大,则不能输出正常结果,如果太小,则程序报错
% 如果数据内包含的样本数比较多(几十以上),则调大lammda=2~4
% 输入sig_ctrl重要度下限的一个控制参数,不能太小,也不能太大。0.001左右
% 输出 约简后的集合及其重要度
% 此程序调用了计算积极域的程序getPosSet
% made by suozi 20140427
% QQ:379786867
[mn]=size(dataArray); % m为样本数 n为属性个数(最后一列为决策属性)
if m<4 || n<4 % 小于4个就没有意义了将导致计算依赖度时去掉一个属性后只有一条属性
disp(‘输入的决策系统行列个数不得小于4个!‘);
return;
end
%%%%%%%% 直接判断数据中某列中存在相同数据,直接表现即为 min == max
% 改修正判断解决了很多程序运行时出现的 flag2未定义现象
dispArry=[];%用于存储具有相同数据的列号
tmpFlag=0;% 用于判断是否有相同数据列
for j=1:n
amax=max(dataArray(:j));
amin=min(dataArray(:j));
if amin == amax
dispArry=[dispArryj];
tmpFlag = 1;%有相同数据列存在
end
end
if tmpFlag == 1
disp(‘所给数据中以下列的列内数据相同,必为冗余数据,可手动删除。请使用删除整理后的数据进行数据约简。(后续的报错可以忽略)‘);
dispArry
return;
- 上一篇:最小二乘蒙特卡洛程序
- 下一篇:改变旧MATLAB函数的CLBP
评论
共有 条评论