Matlab实现决策树算法进行数字识别
来源:互联网 发布:海关进口数据查询 编辑:程序博客网 时间:2024/06/07 00:20
决策树是一个与流程图相似的树状结构;其中,每一个内部结点都是对一个属性的测试,每一个分枝代表一个结果输出,而每个树叶结点代表一个特定的类或者类的分布。决策树最顶层结点称作根结点。一棵典型的决策树如图1所示。它表示概念“购买计算机”,即他预测顾客是否可能购买计算机。
图1 决策树模型
决策树的每个节点的子节点的个数与决策树所使用的算法有关。例如,CART(分类与回归树)算法得到的决策树每个节点有两个分支,这种树称为二叉树。允许节点含有多于两个子节点的树称为多叉树。
Matlab中可以利用treefit函数实现决策树分类算法,treefit函数的语法如下:
t = treefit(X,y),其中X样本的特征向量,y为样本的类别。
现在要实现通过matlab自带的treefit 函数进行手写阿拉伯数字识别;
所要识别的图像是这样的:
这里所使用的数据集来自“数据堂”,已经将图片导入进了matlab,图片像素是28*28=784;这里将每张图片的所有像素点存储在一行当中,对0来说一共有5923行,就是5923张图片。其他的图片以此类推导入到matlab中。
我们需要准备:
- 训练数据
测试数据
训练数据准备:
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实现决策树算法进行数字识别
- Matlab实现决策树算法进行数字识别
- 决策树ID3算法-matlab实现
- 各种机器学习方法(线性回归、支持向量机、决策树、朴素贝叶斯、KNN算法、逻辑回归)实现手写数字识别并用准确率、召回率、F1进行评估
- 决策树算法Matlab实现(train+test)
- 初学决策树之用Matlab工具箱函数实现性别识别
- 用matlab实现神经网络识别数字
- 决策树算法(matlab)
- 浅谈决策树算法以及matlab实现ID3算法
- 浅谈决策树算法以及matlab实现ID3算法
- matlab 使用libsvm工具箱进行手写数字识别
- Matlab实现决策树C4.5算法并执行
- ML—决策树算法实现(train+test,matlab)
- 车牌识别系统Matlab算法实现
- 车牌识别系统Matlab算法实现
- 车牌识别系统Matlab算法实现
- knn算法实现的数字手写识别
- Python实现KNN算法手写识别数字
- Struts2的获取Session的两种方式
- 二尝Visual Studio code 编辑器
- Android应用setContentView与LayoutInflater加载解析机制源码分析
- Mark一下
- Yet Another Computer Vision Index To Datasets (YACVID)图像库索引网站
- Matlab实现决策树算法进行数字识别
- OpenTSDB设计解读
- Struts2的简单配置
- android加载速度优化,通过项目的优化过程分析
- [HNOI2008]Cards (polya定理+乘法逆元,费马小定理)
- C++中交换两个数/二叉树的建立
- 第3章 数据链路层
- 【Leetcode】Copy List with Random Pointer
- 网站开发进阶(十五)JS基础知识充电站