MAT之DT:DT实现根据乳腺肿瘤特征向量高精度预测肿瘤的是恶性还是良性

简介: MAT之DT:DT实现根据乳腺肿瘤特征向量高精度预测肿瘤的是恶性还是良性

输出结果

image.png

image.png

代码设计


%DT:DT实现根据乳腺肿瘤特征向量高精度预测肿瘤的是恶性还是良性

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) '%']);

disp(['乳腺肿瘤整体预测准确率:' num2str((number_M_sim/number_M*100+number_B_sim/number_B*100)/2) '%']);

leafs = logspace(1,2,10);

N = numel(leafs);

err = zeros(N,1);

for n = 1:N

   t = ClassificationTree.fit(P_train,T_train,'crossval','on','minleaf',leafs(n));

   err(n) = kfoldLoss(t);

end

plot(leafs,err);

xlabel('叶子节点含有的最小样本数');

ylabel('交叉验证误差');

title('叶子节点含有的最小样本数对决策树性能的影响,误差越大性能越差—Jason niu')

OptimalTree = ClassificationTree.fit(P_train,T_train,'minleaf',13);

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))


相关文章
|
机器学习/深度学习
乳腺肿瘤预测
本案例使用逻辑回归分类器对乳腺肿瘤进行良性/恶性预测,并对预测模型进行指标测算与评价。
306 0
乳腺肿瘤预测
|
8月前
|
机器学习/深度学习 图计算
R语言广义线性模型(GLM)、全子集回归模型选择、检验分析全国风向气候数据(2)
R语言广义线性模型(GLM)、全子集回归模型选择、检验分析全国风向气候数据(2)
|
8月前
|
数据挖掘
R语言临床预测模型:分层构建COX生存回归模型STRATIFIED COX MODEL、KM生存曲线、PH假设检验
R语言临床预测模型:分层构建COX生存回归模型STRATIFIED COX MODEL、KM生存曲线、PH假设检验
|
8月前
|
机器学习/深度学习
R语言广义线性模型(GLM)、全子集回归模型选择、检验分析全国风向气候数据(1)
R语言广义线性模型(GLM)、全子集回归模型选择、检验分析全国风向气候数据
|
8月前
|
监控 数据可视化 数据挖掘
对用电负荷时间序列数据进行K-medoids聚类建模和GAM回归|附数据代码
对用电负荷时间序列数据进行K-medoids聚类建模和GAM回归|附数据代码
|
8月前
R语言偏最小二乘回归PLS回归分析制药产品化学制造过程数据、缺失值填充、变量重要性
R语言偏最小二乘回归PLS回归分析制药产品化学制造过程数据、缺失值填充、变量重要性
|
8月前
|
机器学习/深度学习 图计算
R语言广义线性模型(GLM)、全子集回归模型选择、检验分析全国风向气候数据
R语言广义线性模型(GLM)、全子集回归模型选择、检验分析全国风向气候数据
|
8月前
R语言样条曲线、泊松回归模型估计女性直肠癌患者标准化发病率(SIR)、死亡率(SMR)
R语言样条曲线、泊松回归模型估计女性直肠癌患者标准化发病率(SIR)、死亡率(SMR)
|
8月前
|
监控 数据可视化 数据挖掘
对用电负荷时间序列数据进行K-medoids聚类建模和GAM回归
对用电负荷时间序列数据进行K-medoids聚类建模和GAM回归
|
8月前
|
数据可视化
R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量
R语言用泊松Poisson回归、GAM样条曲线模型预测骑自行车者的数量

热门文章

最新文章