Matlab 决策树 ID3模型指标计算——Javascript

Version2

15352445_zhongsigen提交报告_页面_01.jpg
15352445_zhongsigen提交报告_页面_02.jpg
15352445_zhongsigen提交报告_页面_03.jpg
15352445_zhongsigen提交报告_页面_04.jpg
15352445_zhongsigen提交报告_页面_05.jpg
15352445_zhongsigen提交报告_页面_06.jpg
15352445_zhongsigen提交报告_页面_07.jpg
15352445_zhongsigen提交报告_页面_08.jpg
15352445_zhongsigen提交报告_页面_09.jpg
15352445_zhongsigen提交报告_页面_10.jpg
15352445_zhongsigen提交报告_页面_11.jpg
15352445_zhongsigen提交报告_页面_12.jpg
15352445_zhongsigen提交报告_页面_13.jpg
15352445_zhongsigen提交报告_页面_14.jpg
15352445_zhongsigen提交报告_页面_15.jpg
15352445_zhongsigen提交报告_页面_16.jpg
15352445_zhongsigen提交报告_页面_17.jpg
15352445_zhongsigen提交报告_页面_18.jpg
15352445_zhongsigen提交报告_页面_19.jpg
15352445_zhongsigen提交报告_页面_20.jpg
15352445_zhongsigen提交报告_页面_21.jpg

Version 1
只能针对离散型输入属性,和预测Label为二分类的情况
——2017.11.4
主函数

size_kvs=size(key_value);
label_class=map_reduce(label);

positive_num=label_class(2,2);
negative_num=label_class(1,2);
entropy=Entropy(size_kvs(1),positive_num,negative_num);
ID3=zeros(size_kvs(2),1);

for id=1:size_kvs(2)
    kv=key_value(:,id);
    KVS=map_reduce(kv);
    positive_kv=[];
    negative_kv=[];
    for i=1:size_kvs(1)
        if label(i)==label_class(2,1)
            positive_kv=[positive_kv;kv(i)];
        elseif label(i)==label_class(1,1)
            negative_kv=[negative_kv;kv(i)];
        end
    end
    positive_KVS=map_reduce(positive_kv);
    negative_KVS=map_reduce(negative_kv);

    entropy_conditional=Entropy_Conditional(KVS,size_kvs(1),positive_KVS,negative_KVS);
    % 计算联合熵
    ID3(id)=entropy-entropy_conditional;
end
% 选择最大的联合熵的属性id
[value,id]=max(ID3)

伪map_reduce函数

function KVS=map_reduce(k_v)
    input=k_v;
    unique_input=unique(k_v,'rows');
    count=histc(input,unique_input);
    KVS=[unique_input,count];
end

计算熵值

function entropy=Entropy(num,num_p,num_n)
    entropy=0;
    p1=(-num_p/num);
    p2=(-num_n/num);
    if p1==0
        entropy=entropy+0;
    else
        entropy=entropy+p1*log2(num_p/num);
    end
        
    if p2==0
        entropy=entropy+0;
    else
        entropy=entropy+(-num_n/num)*log2(num_n/num);
    end
    
end

计算条件熵

function entropy=Entropy_Conditional(KVS,num,p_KVS,n_KVS)
    size_KVS=size(KVS);
    size_p=size(p_KVS);
    size_n=size(n_KVS);
    c_entropy=zeros(size_KVS(1),2);
    for i=1:size_KVS(1)
        for j=1:size_p(1)
            if KVS(i,1)==p_KVS(j,1)
                c_entropy(i,1)=p_KVS(j,2);
            end
        end
    end
    
    for i=1:size_KVS(1)
        for j=1:size_n(1)
            if KVS(i,1)==n_KVS(j,1)
                c_entropy(i,2)=n_KVS(j,2);
            end
        end
    end
    
    c_entropy=[KVS,c_entropy];
    
    pc=0;
    for i=1:size_KVS(1)
        e=Entropy(c_entropy(i,2),c_entropy(i,3),c_entropy(i,4));
        pc=pc+(c_entropy(i,2)/num)*e;
    end
    
    entropy=pc;
end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 决策树理论在决策树理论中,有这样一句话,“用较少的东西,照样可以做很好的事情。越是小的决策树,越优于大的决策树”。...
    制杖灶灶阅读 5,832评论 0 25
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,594评论 18 139
  • 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 声明:作者翻译论文仅为学习,如有侵权请...
    SnailTyan阅读 6,448评论 0 4
  • ML & DM 集成学习 模型融合 ensemble http://wakemeup.space/?p=109 E...
    章鱼哥呀阅读 1,791评论 0 6
  • 有人说,每个人大脑里都有两个小人儿,一个叫理性,一个叫感性。大部分时间,这两个小人儿都在掐架,胜负决定了我们的思维...
    柳絮纷飞啊阅读 1,242评论 6 10