机器学习实战python版第二章示例:手写识别系统

2023-11-10

手写识别系统和前面的例子差不多,我们所需要做的就是把图数据转换成一维数组数据:

数据准备:

def img2vector(filename):
    returnVect = zeros((1,1024))#创建一行1024列的数组
    fr = open(filename)
    for i in range(32):
        lineStr = fr.readline()#按行读入数据
        for j in range(32):
            returnVect[0,32*i+j] = int(lineStr[j])#将字符型数字转换为整型
    return returnVect

内容也比较容易,将二维数组循环读入,保存为一维行:
结果如下。
from numpy import *
import matplotlib
import matplotlib.pyplot as plt
import kNN

testVector = kNN.img2vector(‘testDigits/0_13.txt’)
testVector[0,0:32]
array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 1., 1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0.,
0., 0., 0., 0., 0., 0.])

测试算法

转换为一维的以后就和前面的一样了,
def handwritingClassTest():
hwLabels = []
trainingFileList = listdir(‘trainingDigits’) #load the training set读取文件名
m = len(trainingFileList)#m等于文件的个数
trainingMat = zeros((m,1024))#建立m行1024列数组
for i in range(m):
fileNameStr = trainingFileList[i]
fileStr = fileNameStr.split(‘.’)[0] #take off .txt去掉.txt
classNumStr = int(fileStr.split(‘‘)[0])#前的数字,表示的就是该图对应的数字
hwLabels.append(classNumStr)
trainingMat[i,:] = img2vector(‘trainingDigits/%s’ % fileNameStr)
testFileList = listdir(‘testDigits’) #iterate through the test set
errorCount = 0.0
mTest = len(testFileList)
for i in range(mTest):
fileNameStr = testFileList[i]
fileStr = fileNameStr.split(‘.’)[0] #take off .txt
classNumStr = int(fileStr.split(‘_’)[0])
vectorUnderTest = img2vector(‘testDigits/%s’ % fileNameStr)
classifierResult = classify0(vectorUnderTest, trainingMat, hwLabels, 3)
print “the classifier came back with: %d, the real answer is: %d” % (classifierResult, classNumStr)
if (classifierResult != classNumStr): errorCount += 1.0
print “\nthe total number of errors is: %d” % errorCount
print “\nthe total error rate is: %f” % (errorCount/float(mTest))

the classifier came back with: 9, the real answer is: 9
the classifier came back with: 9, the real answer is: 9
the classifier came back with: 9, the real answer is: 9
the classifier came back with: 9, the real answer is: 9
the classifier came back with: 9, the real answer is: 9
the classifier came back with: 9, the real answer is: 9
the classifier came back with: 9, the real answer is: 9
the classifier came back with: 9, the real answer is: 9
the classifier came back with: 9, the real answer is: 9
the classifier came back with: 9, the real answer is: 9

the total number of errors is: 11

the total error rate is: 0.011628

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习实战python版第二章示例:手写识别系统 的相关文章

  • Python中Decimal类型的澄清

    每个人都知道 或者至少 每个程序员都应该知道 http docs oracle com cd E19957 01 806 3568 ncg goldberg html 即使用float类型可能会导致精度错误 然而 在某些情况下 精确的解决方
  • 使用 python 进行串行数据记录

    Intro 我需要编写一个小程序来实时读取串行数据并将其写入文本文件 我在读取数据方面取得了一些进展 但尚未成功地将这些信息存储在新文件中 这是我的代码 from future import print function import se
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • pydev 调试器:严重警告:此版本的 python 似乎编译不正确(内部生成的文件名不是绝对的)[重复]

    这个问题在这里已经有答案了 通过运行 from sklearn datasets import fetch california housing import pandas as pd pd set option precision 4 m
  • Python逻辑运算符优先级[重复]

    这个问题在这里已经有答案了 哪个运算符优先4 gt 5 or 3 lt 4 and 9 gt 8 这会被评估为真还是假 我知道该声明3 gt 4 or 2 lt 3 and 9 gt 10 显然应该评估为 false 但我不太确定 pyth
  • 通过列表理解压平列表列表

    我正在尝试使用 python 中的列表理解来展平列表 我的清单有点像 1 2 3 4 5 6 7 8 只是为了打印这个列表列表中的单个项目 我编写了这个函数 def flat listoflist for item in listoflis
  • Django 模型在模板中不可迭代

    我试图迭代模型以获取列表中的第一个图像 但它给了我错误 即模型不可迭代 以下是我的模型和模板的代码 我只需要获取与单个产品相关的列表中的第一个图像 模型 py class Product models Model title models
  • if 语句未命中中的 continue 断点

    在下面的代码中 两者a and b是生成器函数的输出 并且可以评估为None或者有一个值 def testBehaviour self a None b 5 while True if not a or not b continue pri
  • 忽略 Mercurial hook 中的某些 Mercurial 命令

    我有一个像这样的善变钩子 hooks pretxncommit myhook python path to file myhook 代码如下所示 def myhook ui repo kwargs do some stuff 但在我的例子中
  • 如何创建一个语句来打印以特定单词开头的单词? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 如何在 python 中打印从特定字母开始的单词 而不使用函数 而是使用方法或循环 1 我有一个字符串 想要打印以 m 开头的单词 S
  • 奇怪的 MySQL Python mod_wsgi 无法连接到 'localhost' (49) 上的 MySQL 服务器问题

    StackOverflow上也有类似的问题 但我还没有发现完全相同的情况 这是在使用 MySQL 的 OS X Leopard 机器上 一些起始信息 MySQL Server version 5 1 30 Apache 2 2 13 Uni
  • 将 matplotlib 颜色图集中在特定值上

    我正在使用 matplotlib 颜色图 seismic 绘制绘图 并且希望白色以 0 为中心 当我在不进行任何更改的情况下运行脚本时 白色从 0 下降到 10 我尝试设置 vmin 50 vmax 50 但在这种情况下我完全失去了白色 关
  • Pandas 根据 diff 列形成簇

    我正在尝试使用 Pandas 根据表示时间 以秒为单位 的列中的差异来消除数据框中的一些接近重复项 例如 import pandas as pd numpy as np df pd DataFrame 1200 1201 1233 1555
  • 使用 NumPy 将非均匀数据从文件读取到数组中

    假设我有一个如下所示的文本文件 33 346 1223 10 23 11 23 12 23 13 23 14 23 15 23 16 24 10 24 11 24 12 24 13 24 14 24 15 24 16 25 14 25 15
  • 使用yield 进行字典理解

    作为一个人为的例子 myset set a b c d mydict item yield join item s for item in myset and list mydict gives as cs bs ds a None b N
  • 如何在 OSX 上安装 numpy 和 scipy?

    我是 Mac 新手 请耐心等待 我现在使用的是雪豹 10 6 4 我想安装numpy和scipy 所以我从他们的官方网站下载了python2 6 numpy和scipy dmg文件 但是 我在导入 numpy 时遇到问题 Library F
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • Ubuntu 上的 Python 2.7

    我是 Python 新手 正在 Linux 机器 Ubuntu 10 10 上工作 它正在运行 python 2 6 但我想运行 2 7 因为它有我想使用的功能 有人敦促我不要安装 2 7 并将其设置为我的默认 python 我的问题是 如
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户

随机推荐

  • Android9自动更新,详解Android app自动更新总结(已适配9.0)

    1 配置 1 1 AndroidManifest xml中添加权限和FileProvider android name androidx core content FileProvider android authorities com f
  • Oracle 数据库密码文件的使用和维护

    Oracle 数据库密码文件的使用和维护 最近在做dataguard测试时 遇到个关于oracle的密码文件的问题 现在就把有关密码文件做下简单的总结 方便以后应对类似的问题 概要 Oracle 关系数据库系统以其卓越的性能获得了广泛的应用
  • 对话MVP

    本期 对话MVP 清华大学软件学院在读博士马福辰将为大家分享他参与社区共建4年以来的成长与蜕变 在这期间 他冲破迷茫 与团队协力开发了面向Solidity合约的安全分析工具SCStudio 并以开源形式贡献给社区 该工具帮助不少开发者检测安
  • 在R语言中,我们经常使用可视化图像来展示数据的分布、关系和趋势

    在R语言中 我们经常使用可视化图像来展示数据的分布 关系和趋势 图像的标题是非常重要的 它能够提供关键信息并帮助读者理解图像的含义 在R中 我们可以使用cex main参数来指定可视化图像标题文本的字体大小 在本文中 我将详细介绍如何使用c
  • springcloud 总 架构图

    版权所有 转载 请表明出处 相关代码地址 欢迎到我的网站寻找更多的知识
  • img图片加载失败?

    问题场景 在工作中经常会使用 lt img gt 标签进行图片展示 但是经常有图片加载失败的情况发生 图片地址不存在 图片已经删除等 场景再现 图片加载失败时的用户体验是很不好的 虽然 lt img gt 标签有alt属性可以展示文本 但是
  • UE4_UnrealBuildTool : error : UBT ERROR: Failed to produce item

    C 编译报错 可能原因 路径太长 包含中文
  • Flink安装部署{单机模式、会话模式(集群部署)、yarn模式(包含hadoop3.1.3部署)}

    flink部署 前置准备 1 CentOS7 5 2 java8 3 配置三台机器时间同步和免密登陆 关闭防火墙 ip地址 主机名 192 168 10 128 master 192 168 10 129 slave1 192 168 10
  • Qt信号和槽的连接方法

    官方文档 查看手册 可以看出 如果想要把信号和槽函数联系起来 通过connect 方法即可 connect 的参数 sender 产生信号的对象 signal 信号的名字 method 槽函数 示例 UdpReceiver UdpRecei
  • spring中Service类中调用this导致@Transaction使用失效的情况

    发现一个有趣的地方 以前在开发中经常遇到的情况 现象 关于expose proxy的解释 this指向目标对象 因此调用this b 将不会执行b事务切面 即不会执行事务增强 spring Transaction 在refresh过程中 通
  • 常见的标识符

    关键字 abstract assert boolean break byte case catch char class const continue default do double else enum extends final fi
  • java后端向前端发送blob类型、arraybuffer类型数据流

    java后端向前端发送blob类型 arraybuffer类型数据流 项目需求概述 前端请求图片时遇到跨域问题 思考解决方案时 考虑前端请求本地javaweb接口时带上图片url 由后端请求到图片后再发送到前端 后端代码 package c
  • Webpack 和 Vite 的区别

    Webpack 和 Vite 都是前端构建工具 但它们在设计哲学和执行方式上有所不同 以下是两者之间的主要区别 基本原理 Webpack 它是一个模块打包工具 它的主要目标是打包 JavaScript 模块 为了处理 ES modules
  • Linux下多线程编程互斥锁和条件变量的简单使用

    Linux下的多线程遵循POSIX线程接口 称为pthread 编写Linux下的多线程程序 需要使用头文件pthread h 链接时需要使用库libpthread a 线程是进程的一个实体 是CPU调度和分派的基本单位 它是比进程更小的能
  • 自己写一个简单的弹窗页面

    最终效果 我使用的vue的js做绑定处理 虽然现在各种 弹窗插件到处都是 但是本着造轮子的本心还是写了一点 这段内容是17年的时候写的 时间跨度稍微有点大 表在意了 基本思路 1 为需要添加遮罩的页面添加一个组件 这个组件绑定在isShow
  • angular2系列教程(六)两种pipe:函数式编程与面向对象编程

    今天 我们要讲的是angualr2的pipe这个知识点 例子 这个例子包含两个pipe 一个是stateful 一个是stateless 是直接复制官方的例子 最新的官网文档已经将其改为了pure和impure 并移除了面向对象的比喻 个人
  • 基于SSM实现校园互助论坛平台

    作者简介 Java 前端 Python开发多年 做过高程 项目经理 架构师 主要内容 Java项目开发 Python项目开发 大学数据和AI项目开发 单片机项目设计 面试技术整理 最新技术分享 收藏点赞不迷路 关注作者有好处 文末获得源码
  • JAVA 使用web3j接入以太坊(一)

    第一步先创建maven项目 在项目的pom文件依赖中添加web3j
  • JWT简介及使用

    JWT简介及使用 JWT JWT能做什么 认证流程 为什么需要JWT jwt结构 JWT使用 java jwt jjwt JWT工具类编写 JWT整合springboot JWT整合Springboot优化 JWT jwt json web
  • 机器学习实战python版第二章示例:手写识别系统

    手写识别系统和前面的例子差不多 我们所需要做的就是把图数据转换成一维数组数据 数据准备 def img2vector filename returnVect zeros 1 1024 创建一行1024列的数组 fr open filenam