决策树---MATLAB程序Word格式文档下载.docx
- 文档编号:12929643
- 上传时间:2022-09-30
- 格式:DOCX
- 页数:4
- 大小:385.49KB
决策树---MATLAB程序Word格式文档下载.docx
《决策树---MATLAB程序Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《决策树---MATLAB程序Word格式文档下载.docx(4页珍藏版)》请在冰豆网上搜索。
⽣成的决策树可能对训练数据有很好的分类能⼒,但对未知的测试数据却未必有很好的分类能⼒,即可能发⽣过拟合现象。
需要对已
⽣成的树⾃上⽽下进⾏剪枝,将树变得更简单,从⽽使它具有更好的泛化能⼒。
具体地,就是去掉过于细分的叶结点,使其回退到⽗结点,甚⾄更⾼的结点,然后将⽗结点或更⾼的结点改为新的叶结点。
汽车特征评估质量
本次使⽤的是下载的⼀个包含汽车多个细节的数据集,包括车门数量、后备箱⼤⼩、维修成本、安全性能、载⼈数量等等,来确定⼀辆汽车的质量。
分类的⽬的是把车辆的质量分为4种类型:
不达标、达标、良好、优秀。
数据集的形式如图1所⽰,其中的每个值都可以看作成字符串。
本次考虑数据集中的6个属性,其取值范围是这样的:
购买价位:
取值范围是vhigh、high、med、low,分别代表很⾼、⾼、中等、低;
维修成本:
车门数量:
取值范围是2、3、4、5、5more等;
载客数量:
取值范围是2、4、more等;
动⼒性能:
取值范围是small、med、big,分别代表⼩、中、⼤;
安全性能:
取值范围是low、med、high,分别代表低、中、⾼
分类的结果,即汽车的质量取值范围是unacc、acc、good、vgood,分别代表不达标、达标、良好、优秀。
考虑到每⼀⾏都具有字符串属性,需要假设所有的特征均是字符串,并在次基础上建⽴分类器。
⾸先将数据集当中的所有字符串变为数字,⽅便后⾯的分类,由于下载的数据集为.data格式,matlab⽆法直接读取,已经转化为.xlsx格式,并且将vhigh、high、med、low分别替换为4、3、2、1,将small、med、big替换为1、2、3,将low、med、high替换为
1、2、3,将unacc、acc、good、vgood替换为1、2、3、4。
数据中共有1728组,随机从中取出1500组作为训练集,剩下的228组作为测试集。
使⽤训练集建⽴决策树,然后使⽤模型进⾏预测。
分
别根据决策树的结果计算出决策树中对车辆各种情况预测的正确率以及全部测试集预测的准确率。
然后对决策树进⾏修剪,对⽐起重采样误差以及交叉验证误差。
clearall;
clc;
closeall;
%%导⼊数据
loadcar;
a=randperm(1728);
%训练集
Train_Data=data(a(p>
Train_Label=data(a(p>
%测试集
Test_Data=data(a(1501:
1728),1:
6);
Test_Label=data(a(1501:
1728),7);
%%创建决策树分类器
Tree=ClassificationTree.fit(Train_Data,Train_Label);
%%查看决策树视图
view(Tree);
view(Tree,'
mode'
'
graph'
);
%%预测分类
Tree_pre=predict(Tree,Test_Data);
%%结果分析
count_train_1=length(find(Train_Label==1));
%训练集中车辆质量不达标个数count_train_2=length(find(Train_Label==2));
%训练集中车辆质量达标个数count_train_3=length(find(Train_Label==3));
%训练集中车辆质量良好个数count_train_4=length(find(Train_Label==4));
%训练集中车辆质量优秀个数
rate_train_1=count_train_1/1500;
rate_train_2=count_train_2/1500;
rate_train_3=count_train_3/1500;
rate_train_4=count_train_4/1500;
训练%集中车辆质量不达标占的⽐例训练%集中车辆质量达标占的⽐例训练%集中车辆质量优良占的⽐例训练%集中车辆质量优秀占的⽐例
total_1=length(find(data(:
7)==1));
%总数据中车辆质量不达标个数total_2=length(find(data(:
7)==2));
%总数据中车辆质量达标个数total_3=length(find(data(:
7)==3));
%总数据中车辆质量优良个数total_4=length(find(data(:
7)==4));
%总数据中车辆质量优秀个数
count_test_1=length(find(Test_Label==1));
%测试集中车辆质量不达标个数count_test_2=length(find(Test_Label==2));
%测试集中车辆质量达标个数count_test_3=length(find(Test_Label==3));
%测试集中车辆质量良好个数count_test_4=length(find(Test_Label==4));
%测试集中车辆质量优秀个数
count_right_1=length(find(Tree_pre==1&
Test_Label==1));
count_right_2=length(find(Tree_pre==2&
Test_Label==2));
count_right_3=length(find(Tree_pre==3&
Test_Label==3));
count_right_4=length(find(Tree_pre==4&
Test_Label==4));
测%试集中预测车辆质量不达标正确的个数测%试集中预测车辆质量达标正确的个数测%试集中预测车辆质量优良正确的个数测%试集中预测车辆质量优秀正确的个数
rate_right=(count_right_1+count_right_2+count_right_3+count_right_4)/228;
%%显⽰部分结果
disp(['
车辆总数:
1728'
...
不'
达标:
'
num2str(total_1)...达'
标:
num2str(total_2)...优'
良:
num2str(total_3)...优'
秀:
num2str(total_4)]);
训练集车辆数:
1500'
num2str(count_train_1)...达'
num2str(count_train_2)...优'
num2str(count_train_3)...优'
num2str(count_train_4)]);
测试集车辆数:
228'
num2str(count_test_1)...
num2str(count_test_1)...达'
num2str(count_test_2)...优'
num2str(count_test_3)...优'
num2str(count_test_4)]);
决策树判断结果:
达标正确率:
sprintf('
%2.2f%%'
count_right_1/count_test_1*100)...达'
标正确率:
count_right_2/count_test_2*100)...优'
良正确率:
count_right_3/count_test_3*100)...优'
秀正确率:
count_right_4/count_test_4*100)]);
总正确率:
sprintf('
rate_right*100)]);
%%优化前决策树的重采样误差和交叉验证误差resubDefault=resubLoss(Tree);
lossDefault=kfoldLoss(crossval(Tree));
disp(['
剪枝前决策树的重采样误差:
num2str(resubDefault)]);
剪枝前决策树的交叉验证误差:
...num2str(lossDefault)]);
%%剪枝
[~,~,~,bestlevel]=cvLoss(Tree,'
subtrees'
all'
treesize'
min'
cptree=prune(Tree,'
Level'
bestlevel);
view(cptree,'
)
%%剪枝后决策树的重采样误差和交叉验证误差
resubPrune=resubLoss(cptree);
lossPrune=kfoldLoss(crossval(cptree));
剪枝后决策树的重采样误差:
...num2str(resubPrune)]);
剪枝后决策树的交叉验证误差:
结果
车辆总数:
1728不达标:
1210达标:
384优良:
69优秀:
65
训练集车辆数:
1500不达标:
1046达标:
338优良:
56优秀:
60测试集车辆数:
228不达标:
164达标:
46优良:
13优秀:
5
决策树判断结果:
不达标正确率:
97.56%达标正确率:
95.65%优良正确率:
84.62%优秀正确率:
100.00%总正确率:
96.49%
剪枝前决策树的重采样误差:
0.026
0.048667剪枝后决策树的重采样误差:
0.026667剪枝后决策树的交叉验证误差:
0.0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 决策树 MATLAB 程序