决策树(Decision Tree)是在已知各种情况发生概率的基础上,通过构成决策树来求取净现值的期望值大于等于零的概率,评价项目风险,判断其可行性的决策分析方法,是直观运用概率分析的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。在机器学习中,决策树是一个预测模型,他代表的是对象属性与对象值之间的一种映射关系。Entropy = 系统的凌乱程度,使用算法ID3, C4.5和C5.0生成树算法使用熵。这一度量是基于信息学理论中熵的概念。

%% 决策树分类器在乳腺癌诊断中的应用研究(2009a版本)%% 清空环境变量
clear all
clc
warning off%% 导入数据
load data.mat
% 随机产生训练集/测试集
a = randperm(569);
Train = data(a(1:500),:);
Test = data(a(501:end),:);
% 训练数据
P_train = Train(:,3:end);
T_train = Train(:,2);
% 测试数据
P_test = Test(:,3:end);
T_test = Test(:,2);%% 创建决策树分类器
ctree = classregtree(P_train,T_train);
% 查看决策树视图
view(ctree);%% 仿真测试
T_sim = eval(ctree,P_test);%% 结果分析
count_B = length(find(T_train == 1));
count_M = length(find(T_train == 2));
rate_B = count_B / 500;
rate_M = count_M / 500;
total_B = length(find(data(:,2) == 1));
total_M = length(find(data(:,2) == 2));
number_B = length(find(T_test == 1));
number_M = length(find(T_test == 2));
number_B_sim = length(find(T_sim == 1 & T_test == 1));
number_M_sim = length(find(T_sim == 2 & T_test == 2));
disp(['病例总数:' num2str(569)...'  良性:' num2str(total_B)...'  恶性:' num2str(total_M)]);
disp(['训练集病例总数:' num2str(500)...'  良性:' num2str(count_B)...'  恶性:' num2str(count_M)]);
disp(['测试集病例总数:' num2str(69)...'  良性:' num2str(number_B)...'  恶性:' num2str(number_M)]);
disp(['良性乳腺肿瘤确诊:' num2str(number_B_sim)...'  误诊:' num2str(number_B - number_B_sim)...'  确诊率p1=' num2str(number_B_sim/number_B*100) '%']);
disp(['恶性乳腺肿瘤确诊:' num2str(number_M_sim)...'  误诊:' num2str(number_M - number_M_sim)...'  确诊率p2=' num2str(number_M_sim/number_M*100) '%']);
%% 决策树分类器在乳腺癌诊断中的应用研究(2012b版本)%% 清空环境变量
clear all
clc
warning off%% 导入数据
load data.mat
% 随机产生训练集/测试集
a = randperm(569);
Train = data(a(1:500),:);
Test = data(a(501:end),:);
% 训练数据
P_train = Train(:,3:end);
T_train = Train(:,2);
% 测试数据
P_test = Test(:,3:end);
T_test = Test(:,2);%% 创建决策树分类器
ctree = ClassificationTree.fit(P_train,T_train);
% 查看决策树视图
view(ctree);
view(ctree,'mode','graph');%% 仿真测试
T_sim = predict(ctree,P_test);%% 结果分析
count_B = length(find(T_train == 1));
count_M = length(find(T_train == 2));
rate_B = count_B / 500;
rate_M = count_M / 500;
total_B = length(find(data(:,2) == 1));
total_M = length(find(data(:,2) == 2));
number_B = length(find(T_test == 1));
number_M = length(find(T_test == 2));
number_B_sim = length(find(T_sim == 1 & T_test == 1));
number_M_sim = length(find(T_sim == 2 & T_test == 2));
disp(['病例总数:' num2str(569)...'  良性:' num2str(total_B)...'  恶性:' num2str(total_M)]);
disp(['训练集病例总数:' num2str(500)...'  良性:' num2str(count_B)...'  恶性:' num2str(count_M)]);
disp(['测试集病例总数:' num2str(69)...'  良性:' num2str(number_B)...'  恶性:' num2str(number_M)]);
disp(['良性乳腺肿瘤确诊:' num2str(number_B_sim)...'  误诊:' num2str(number_B - number_B_sim)...'  确诊率p1=' num2str(number_B_sim/number_B*100) '%']);
disp(['恶性乳腺肿瘤确诊:' num2str(number_M_sim)...'  误诊:' num2str(number_M - number_M_sim)...'  确诊率p2=' num2str(number_M_sim/number_M*100) '%']);%% 叶子节点含有的最小样本数对决策树性能的影响
leafs = logspace(1,2,10);N = numel(leafs);err = zeros(N,1);
for n = 1:Nt = ClassificationTree.fit(P_train,T_train,'crossval','on','minleaf',leafs(n));err(n) = kfoldLoss(t);
end
plot(leafs,err);
xlabel('叶子节点含有的最小样本数');
ylabel('交叉验证误差');
title('叶子节点含有的最小样本数对决策树性能的影响')%% 设置minleaf为28,产生优化决策树
OptimalTree = ClassificationTree.fit(P_train,T_train,'minleaf',28);
view(OptimalTree,'mode','graph')% 计算优化后决策树的重采样误差和交叉验证误差
resubOpt = resubLoss(OptimalTree)
lossOpt = kfoldLoss(crossval(OptimalTree))
% 计算优化前决策树的重采样误差和交叉验证误差
resubDefault = resubLoss(ctree)
lossDefault = kfoldLoss(crossval(ctree))%% 剪枝
[~,~,~,bestlevel] = cvLoss(ctree,'subtrees','all','treesize','min')
cptree = prune(ctree,'Level',bestlevel);
view(cptree,'mode','graph')% 计算剪枝后决策树的重采样误差和交叉验证误差
resubPrune = resubLoss(cptree)
lossPrune = kfoldLoss(crossval(cptree))

决策树分类器的应用研究——乳腺癌诊断相关推荐

  1. 《MATLAB 神经网络43个案例分析》:第30章 基于随机森林思想的组合分类器设计——乳腺癌诊断

    <MATLAB 神经网络43个案例分析>:第30章 基于随机森林思想的组合分类器设计--乳腺癌诊断 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB ...

  2. 《MATLAB智能算法30个案例》:第28章 支持向量机的分类——基于乳腺组织电阻抗特性的乳腺癌诊断

    <MATLAB智能算法30个案例>:第28章 支持向量机的分类--基于乳腺组织电阻抗特性的乳腺癌诊断 1. 前言 2. MATLAB 仿真示例 3. 小结 1. 前言 <MATLAB ...

  3. TF之LiR:利用TF自定义一个线性分类器LiR对乳腺癌肿瘤数据集进行二分类预测(良/恶性)

    TF之LiR:利用TF自定义一个线性分类器LiR对乳腺癌肿瘤数据集进行二分类预测(良/恶性) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 X_train = np.float32 ...

  4. MAT之SVM:SVM之分类预测根据已有大量数据集案例,输入已有病例的特征向量实现乳腺癌诊断高准确率预测

    MAT之SVM:SVM之分类预测根据已有大量数据集案例,输入已有病例的特征向量实现乳腺癌诊断高准确率预测 目录 输出结果 代码设计 输出结果 代码设计 load BreastTissue_data.m ...

  5. 分类决策树 回归决策树_决策树分类器背后的数学

    分类决策树 回归决策树 决策树分类器背后的数学 (Maths behind Decision Tree Classifier) Before we see the python implementat ...

  6. 机器学习算法——手动搭建决策树分类器(代码+作图)

    决策树分类器实战 决策树分类器原理(CART) 分类器实现 使用鸢尾花数据集检验 决策树分类器原理(CART) CART是决策树分类器的一种,它的独特之处在于可以处理分类问题也可以处理回归问题,具体处 ...

  7. 基于Python的决策树分类器与剪枝

    作者|Angel Das 编译|VK 来源|Towards Data Science 介绍 决策树分类器是一种有监督的学习模型,在我们关心可解释性时非常有用. 决策树通过基于每个层次的多个问题做出决策 ...

  8. 干货!容忍数据缺失的临床超声报告知识图谱乳腺癌诊断

    点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 医学领域经常存在样本短缺或数据缺陷的问题,在医学领域数据层面造成严重干扰.鉴于临床报告因登记过程的数据遗漏,诊断报告数据缺失问题会造成现 ...

  9. 乳腺癌诊断和药物技术行业调研报告 - 市场现状分析与发展前景预测

    乳腺癌诊断和药物技术市场的企业竞争态势 该报告涉及的主要国际市场参与者有Abbott.Roche.BioMerieux.Becton Dickinson.GE Healthcare.Hologic.P ...

最新文章

  1. 双脑协同RSVP目标检测
  2. f1 score 代码_2019JDATA-用户对品类下店铺的购买预测方案及代码分享(亚军)
  3. js中的时间与毫秒数互相转换
  4. php类常量的特点,php类常量是什么?类常量用法详解
  5. 前馈神经网络中的前馈_前馈神经网络在基于趋势的交易中的有效性(1)
  6. virtualbox 命令
  7. tar oracle home 权限不够,linux系统安装jdk
  8. 【小窍门】浏览器兼容圆角Border-radius的问题
  9. 一年换7家公司,95后跳槽多疯狂
  10. iPhone 13 Pro全新配色曝光:全新“磨砂黑”致敬经典
  11. fw-cloud-framework项目配置、启动问题
  12. 18岁智商低的表现_孩子反应慢并不是智商低,三个原因很关键,第一个跟父母有关...
  13. Hog特征、Haar特征
  14. 【CSS】span标签设置宽度
  15. (七)Python绘图基础:Matplotlib绘图
  16. docker daemon.json肯多多
  17. QQ用户这两个文件夹要定时清理
  18. udo/tcp协议占用端口列表(因5060被占用而采用的新端口)
  19. [CodeFestival 2017J]MST
  20. 【SCI征稿】大数据类SCI,走期刊部系统,正刊,审稿顺利

热门文章

  1. 使用CURL来自动登录并下载东西
  2. 函数(那些东西有了一个名字)
  3. [转]让程序员跳槽的非钱原因
  4. Win10 平台C#与低功耗蓝牙BLE设备通信案例
  5. 做跨境电商的货源应该如何解决?
  6. ChatGPT的初步学习和认识
  7. 拒绝摆烂!神仙网站Python自学,一路从入门闯到最后,边学边玩
  8. 快速 Building ONL 网络操作系统 X86 平台image
  9. 小孔能增强低音?什么是音箱倒相孔
  10. 资产超2000亿美元,48小时闪崩:硅谷银行破产啦!一大波科技公司发不出工资?...