Matlab实现决策树算法进行数字识别

原创 2015年11月20日 19:46:56

决策树是一个与流程图相似的树状结构;其中,每一个内部结点都是对一个属性的测试,每一个分枝代表一个结果输出,而每个树叶结点代表一个特定的类或者类的分布。决策树最顶层结点称作根结点。一棵典型的决策树如图1所示。它表示概念“购买计算机”,即他预测顾客是否可能购买计算机。

决策树模型
图1 决策树模型

决策树的每个节点的子节点的个数与决策树所使用的算法有关。例如,CART(分类与回归树)算法得到的决策树每个节点有两个分支,这种树称为二叉树。允许节点含有多于两个子节点的树称为多叉树。
Matlab中可以利用treefit函数实现决策树分类算法,treefit函数的语法如下:
t = treefit(X,y),其中X样本的特征向量,y为样本的类别。

现在要实现通过matlab自带的treefit 函数进行手写阿拉伯数字识别;
所要识别的图像是这样的:
阿拉伯数字0
阿拉伯数字1

这里所使用的数据集来自“数据堂”,已经将图片导入进了matlab,图片像素是28*28=784;这里将每张图片的所有像素点存储在一行当中,对0来说一共有5923行,就是5923张图片。其他的图片以此类推导入到matlab中。

这里写图片描述

我们需要准备:

  1. 训练数据
  2. 测试数据

    训练数据准备:

dtrain0=train0(1:2000,:);
dtrain1=train1(1:2000,:);
dtrain2=train2(1:2000,:);
dtrain3=train3(1:2000,:);
dtrain4=train4(1:2000,:);
dtrain5=train5(1:2000,:);
dtrain6=train6(1:2000,:);
dtrain7=train7(1:2000,:);
dtrain8=train8(1:2000,:);
dtrain9=train9(1:2000,:);

trainset10=[dtrain0;dtrain1;dtrain2;dtrain3;dtrain4;dtrain5;dtrain6;dtrain7;dtrain8;dtrain9]
tt=double(trainset10);

在每个阿拉伯数字训练集中取出2000行作为训练数据,(1:2000,:)代表 1-2000行,所有的列;
trainset10=[dtrain0;dtrain1;dtrain2;dtrain3;dtrain4;dtrain5;dtrain6;dtrain7;dtrain8;dtrain9]
表示将所有的dtrain合并在一个变量中,行追加,列不变,生成的trainset10 有20000行;

这里写图片描述

测试数据准备:
过程相同,随便从测试数据集里面挑出一些数据,合并在一起,这里我每个数字取10个;

testset0=test0(1:10,:);
testset1=test1(1:10,:);
testset2=test2(1:10,:);
testset3=test3(1:10,:);
testset4=test4(1:10,:);
testset5=test5(1:10,:);
testset6=test6(1:10,:);
testset7=test7(1:10,:);
testset8=test8(1:10,:);
testset9=test9(1:10,:);

testsetAll=[testset0;testset1;testset2;testset3;testset4;testset5;testset6;testset7;testset8;testset9];
testsetAll_d=double(testsetAll);

生成决策树:

Trainingset=(tt);
y=['0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'0';'"'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';'1';"'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2';'2'"'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';'3';........];


Testingset=(testsetAll_d);

tree = treefit(Trainingset, y); 
[dtnum,dtnode,dtclass] = treeval(tree,Testingset);

y是对应于Trainingset的训练数据,就是正确答案,因为太长了,只摘了一部分,其中要按顺序和Trainingset 一一对应;
通过 tree = treefit(Trainingset, y); 生成一个决策树

最后的结果 存储在dtclass中;
这里写图片描述
这里写图片描述
这里写图片描述

可以看到 2 的识别是最差的一个,其他的数字很少出错。

版权声明:本文为博主原创文章,转载请注明出处。 举报

相关文章推荐

决策树的实现原理与matlab代码

很久不写博客了,感觉很长一段时间只是一味的看书,疏不知一味地看书、写代码会导致自己的思考以及总结能力变得衰弱。所以,我决定还是继续写博客。废话不多说了,今天想主要记录数据挖掘中的决策树。希望能够将自己...

机器学习决策树算法解决图像识别

随着科技的发展,信息量的日益膨胀,对此我们引入了一个新的名词——大数据,在大数据领域中我们面临三大问题,数据抓取,数据管理和处理数据。他是需要新的处理模式才能具有更强的决策力、洞察发现力和流程优化能力...
  • Sjamp
  • Sjamp
  • 2016-12-19 18:02
  • 1641

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

决策树--matlab自带函数

已知训练数据和训练数据类,获得决策树模型: t=treefit(train_X,y);%train_X的行数为样本数,列数为特征数;y的行数为样本数,1列表征类; t=classregtree(t...

Matlab实现决策树算法进行数字识别

决策树是一个与流程图相似的树状结构;其中,每一个内部结点都是对一个属性的测试,每一个分枝代表一个结果输出,而每个树叶结点代表一个特定的类或者类的分布。决策树最顶层结点称作根结点。一棵典型的决策树如图1...
  • geyalu
  • geyalu
  • 2015-11-20 19:46
  • 1660

Matlab实现决策树算法进行数字识别

转自:http://blog.csdn.net/geyalu/article/details/49951129 决策树是一个与流程图相似的树状结构;其中,每一个内部结点都是对一个属性的测试,每...

决策树算法Matlab实现(train+test)

决策树是一种特别简单的机器学习分类算法。决策树想法来源于人类的决策过程。举个最简单的例子,人类发现下雨的时候,往往会有刮东风,然后天色变暗。对应于决策树模型,预测天气模型中的刮东风和天色变暗就是我们收...

决策树算法(matlab)

本文转载自: 点击打开链接     决策树是一种特别简单的机器学习分类算法。决策树想法来源于人类的决策过程。举个最简单的例子,人类发现下雨的时候,往往会有刮东风,然后天色变暗。对应于决策树模型...

机器学习算法-决策树

归纳决策树ID3 先上问题吧,我们统计了14天的气象数据(指标包括outlook,temperature,humidity,windy),并已知这些天气是否打球(play)。如果给出新一天的...

浅谈决策树算法以及matlab实现ID3算法

http://blog.csdn.net/lfdanding/article/details/50753239 决策树方法在分类、预测、规则提取等领域有着广泛的应用。在20世纪70年代后期和...

浅谈决策树算法以及matlab实现ID3算法

决策树方法在分类、预测、规则提取等领域有着广泛的应用。在20世纪70年代后期和80年代初期,机器学习研究者J.Ross Quinilan提出了ID3算法以后,决策树在机器学习、数据挖掘领域得到极大的发...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)