文章目录

  • 决策树识别手写体
    • 前言
    • 代码获取
    • 实现步骤
      • 所需的库
      • 导入数据集
      • 信息熵
      • 选出信息增益最高的属性
      • 选出信息增益率最高的属性
      • 选出基尼指数最低的属性
      • 生成决策树
      • 展示树
      • 测试决策树
      • 简单实现演示
      • 效果展示
        • 信息增益
        • 信息增益率
        • 基尼指数
      • 改进
      • 改进效果
        • 信息增益
        • 信息增益率
        • 基尼指数
      • 结果分析

决策树识别手写体

前言

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

代码获取

github

实现步骤

所需的库

from matplotlib.font_manager import FontProperties
import matplotlib.pyplot as plt
from math import log
import operator
import pickle
import sklearn.datasets as datasets  # 数据集模块
from sklearn.model_selection import train_test_split  # 划分训练集和验证集
import numpy as np

导入数据集

这里我们使用sklearn的手写体数据集

def createDataSet():# 数据集X, y = datasets.load_digits(return_X_y=True)# 随机划分训练集和验证集,使用sklearn中的方法X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)X_train = np.hstack((X_train, y_train.reshape(-1, 1)))  # 横向拼接labels = np.arange(64)X_train = X_train.tolist()labels = labels.tolist()return X_train, labels, X_test, y_test

信息熵

信息熵是度量样本集合纯度最常用的一种指标,其定义如下
H(X)=−∑xP(x)log⁡2[P(x)]H(X)=-\sum_{x} P(x) \log _{2}[P(x)] H(X)=−x∑​P(x)log2​[P(x)]
其值越小,X的纯度越高。

然后我们需要通过特征选取得到信息增益最大的属性,信息增益的定义如下,样本集合

决策树实现手写体识别相关推荐

  1. libsvm Minist Hog 手写体识别

    统计手写数字集的HOG特征 转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ 这篇文章是模式识别的小作业,利用sv ...

  2. python模拟手写笔迹_pytorch实现MNIST手写体识别

    本文实例为大家分享了pytorch实现MNIST手写体识别的具体代码,供大家参考,具体内容如下 实验环境 pytorch 1.4 Windows 10 python 3.7 cuda 10.1(我笔记 ...

  3. TensorRT(3)-C++ API使用:mnist手写体识别

    本节将介绍如何使用tensorRT C++ API 进行网络模型创建. 1 使用C++ API 进行 tensorRT 模型创建 还是通过 tensorRT官方给的一个例程来学习. 还是mnist手写 ...

  4. TensorRT(2)-基本使用:mnist手写体识别

    结合 tensorRT官方给出的一个例程,介绍tensorRT的使用. 这个例程是mnist手写体识别.例程位于目录: /usr/src/tensorrt/samples/sampleMNIST 文件 ...

  5. 基于感知机的手写体识别

    对于手写体的识别,我采用的是keras来实现的,首先搭建一个单层感知机的模型来训练,来观察其模型的预测效果. 学习步骤如下: 源码: from keras.datasets import mnist ...

  6. Python3实现简单可学习的手写体识别

    0.目录 1.前言 2.通过pymssql与数据库的交互 3.通过pyqt与界面的交互 4.UI与数据库的交互 5.最后的main主函数 1.前言 版本:Python3.6.1 + PyQt5 + S ...

  7. [深度学习-实践]BP神经网络的Helloworld(手写体识别和Fashion_mnist)

    前言 原理部分请看这里 [深度学习-原理]BP神经网络 Tensorflow2 实现一个简单的识别衣服的例子 数据集Fashion_mnist, 此数据集包含10类型的衣服 ('T-shirt/top ...

  8. python神经网络案例——CNN卷积神经网络实现mnist手写体识别

    分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:栾鹏) python教程全解 CNN卷积神经网络的理论教程参考 ...

  9. python神经网络案例——FC全连接神经网络实现mnist手写体识别

    全栈工程师开发手册 (作者:栾鹏) python教程全解 FC全连接神经网络的理论教程参考 http://blog.csdn.net/luanpeng825485697/article/details ...

  10. R︱Softmax Regression建模 (MNIST 手写体识别和文档多分类应用)

    本文转载自经管之家论坛, R语言中的Softmax Regression建模 (MNIST 手写体识别和文档多分类应用) R中的softmaxreg包,发自2016-09-09,链接:https:// ...

最新文章

  1. 【c++】【转】c++中的explicit关键字
  2. 禅道启动mysql报错_测试工具之在Linux服务器上部署禅道Bug管理系统
  3. leetcode142 环形链表II
  4. SQL 语句技巧--排名函数的使用实例
  5. ios kvo 要引入_iOS中KVO的使用
  6. ubuntu1204 dvd 用tweak后界面起不来 swap设置4g足够32位系统软件用
  7. IDEA运行main,junit方法报错Class not found
  8. 春节过后,外贸人如何快速抓住采购旺季,高效跟进客户
  9. ffmpeg源码国内gitee下载
  10. android+桌面组件开发,Android桌面小部件开发,及注意事项
  11. java中怎么编写一个类_Java入门(8) 创建新类
  12. 优化你简历的8个技巧
  13. Mac上搭建虚拟机 安装windows系列
  14. 转:超越一切的熵增定律
  15. 第1章 开篇-为什么要做CI/CD?
  16. excel多表合并为一个表
  17. Mysql语句编写循环
  18. 计算机hppusg.exe应用程序错误,spoolsv.exe-应用程序错误
  19. 【美团王兴饭否DAY1】关于CEO的思考
  20. 怎样用计算机告白,计算机学科的告白情话

热门文章

  1. u3d_fw 框架使用
  2. 利用gflags自定义标志的使用方法
  3. 平面中判断点在三角形内算法(重心法)
  4. Insyde uefi 隐藏设置_固件级安全,微软安全工具新增UEFI扫描功能
  5. 人脸对齐(一)--定义及作用
  6. dlib人脸配准(人脸对齐)
  7. 西门子g120变频器接线图_西门子变频器调试软件汇总starter,starterdrive,v-assistant
  8. 三维点云数据处理软件供技术原理说明_三维点云模型
  9. 视觉开发应用1- 机器视觉基本知识之工业相机
  10. matlab 转子振动,转子—支承系统振动不平衡响应的MATLAB实现