• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-06-14
  • 语言: Matlab
  • 标签: 粗糙集  

资源简介

粗糙集约简算法的简单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;

评论

共有 条评论