机器学习实验一:KNN算法,手写数字数据集(使用汉明距离)(2)
KNN-手写数字数据集:
使用sklearn中的KNN算法工具包( KNeighborsClassifier)替换实现分类器的构建,注意使用的是汉明距离;



运行结果:(大概要运行4分钟左右)

代码:
import pandas as pd
import osdef hamming(str1, str2):if len(str1) != len(str2):raise ValueError("两个字符串长度不相等")return sum(c1 != c2 for c1, c2 in zip(str1, str2))def get_train():path = 'digits/trainingDigits'trainingFileList0 = os.listdir(path)trainingFileList = [file[2:] if file.startswith('._') else file for file in trainingFileList0]train = pd.DataFrame()img = []labels = []for i in range(len(trainingFileList)):filename = trainingFileList[i]with open(f'digits/trainingDigits/{filename}', 'r') as f:txt = f.read().replace('\n', '')img.append(txt)filelabel = filename.split('_')[0]labels.append(filelabel)train['img'] = imgtrain['labels'] = labelsreturn traindef get_test():path = 'digits/testDigits'testFileList0 = os.listdir(path)testFileList = [file[2:] if file.startswith('._') else file for file in testFileList0]test = pd.DataFrame()img = []labels = []for filename in testFileList:with open(f'digits/testDigits/{filename}', 'r') as f:txt = f.read().replace('\n', '')img.append(txt)filelabel = filename.split('_')[0]labels.append(filelabel)test['img'] = imgtest['labels'] = labelsreturn testdef handwritingClass(train, test, k):n = train.shape[0]m = test.shape[0]result = []for i in range(m):dist = []for j in range(n):d = str(hamming(train.iloc[j, 0], test.iloc[i, 0]))dist.append(d)dist_l = pd.DataFrame({'dist': dist, 'labels': train.iloc[:, 1]})dr = dist_l.sort_values(by='dist')[:k]re = dr.loc[:, 'labels'].value_counts()result.append(re.index[0])result = pd.Series(result)test['predict'] = resultacc = (test.iloc[:, -1] == test.iloc[:, -2]).mean()print(f'模型预测准确率为{acc:.5f}')return test# 获取训练集和测试集
train = get_train()
test = get_test()# 调用函数
handwritingClass(train, test, 3)
相关文章:
机器学习实验一:KNN算法,手写数字数据集(使用汉明距离)(2)
KNN-手写数字数据集: 使用sklearn中的KNN算法工具包( KNeighborsClassifier)替换实现分类器的构建,注意使用的是汉明距离; 运行结果:(大概要运行4分钟左右) 代码: import pandas as…...
docker应用部署---nginx部署的配置
1. 搜索nginx镜像 docker search nginx2. 拉取nginx镜像 docker pull nginx3. 创建容器,设置端口映射、目录映射 # 在/root目录下创建nginx目录用于存储nginx数据信息 mkdir ~/nginx cd ~/nginx mkdir conf cd conf# 在~/nginx/conf/下创建nginx.conf文件,粘贴下…...
Sql Server中的表组织和索引组织(聚集索引结构,非聚集索引结构,堆结构)
正文 SqlServer用三种方法来组织其分区中的数据或索引页: 1、聚集索引结构 聚集索引是按B树结构进行组织的,B树中的每一页称为一个索引节点。每个索引行包含一个键值和一个指针。指针指向B树上的某一中间级页(比如根节点指向中间级节点中的…...
C++类对象反制机制实现_精简修改版
前几天写的类对象反射机制太烦锁了,今天写个修改版的,精简为两个类 一个是类的数据结构,另一个是类的父类对象,把所有操作类的方法都写到父类中 1.类的信息结构体 struct Field_Node {TCHAR m_name[20]; //字段名称TCHAR m_typeName[20]; // 字段类型名称size_t m_typeHashC…...
C#开发的IEnumerable接口
C#开发的IEnumerable接口 在前面分析中,我们会遇到下面这行代码: var refineries = self.World.ActorsWithTrait<IAcceptResources>() .Where(r => r.Actor != ignore && r.Actor.Owner == self.Owner && IsAcceptableProcType(r.Actor)) .Select…...
Redis详细安装教程
目录 一、Redis 的安装及启动停止1-1 下载 redis的压缩包1-2 开始解压 redis1-3 执行 make 命令编译1-4 启动 redis修改配置文件1-5 设置远程连接1-6 设置后台启动1-7 设置密码1-8 配置服务启动(使用 systemctl 的方法)启动 redis配置开机启动操作redis使…...
36基于matlab的对分解层数和惩罚因子进行优化
基于matlab的对分解层数和惩罚因子进行优化。蚁狮优化算法优化VMD,算术优化算法优化VMD,遗传优化算法优化VMD,灰狼优化算法优化VMD,海洋捕食者优化算法优化VMD,粒子群优化VMD,麻雀优化算法优化VMD,鲸鱼优化…...
【Flutter】自定义分段选择器Slider
【Flutter】ZFJ自定义分段选择器Slider 前言 在开发一个APP的时候,需要用到一个分段选择器,系统的不满足就自己自定义了一个; 可以自定义节点的数量、自定义节点的大小、自定义滑竿的粗细,自定义气泡的有无等等… 基本上满足你…...
【软考系统架构设计师】2023年系统架构师冲刺模拟习题之《软件工程》
在软考中软件工程模块主要包含以下考点: 文章目录 软件过程模型🌟🌟🌟🌟逆向工程🌟基于构件的软件工程🌟🌟软件开发与软件设计与维护净室软件工程软件模型软件需求 软件过程模型&am…...
非遗主题网站的设计与实现基于PHP实现
包括源码参考论文 下载地址: https://juzhendongli.store/commodity/details/18...
YOLO目标检测——红外人员数据集【含对应voc、coco和yolo三种格式标签+划分脚本】
实际项目应用:红外热像仪进行安全监控数据集说明:红外人员检测数据集,真实场景的高质量图片数据标签说明:使用lableimg标注软件标注,标注框质量高,含voc(xml)、coco(json)和yolo(txt)三种格式标签ÿ…...
C++项目——云备份-⑧-客户端各模块实现
文章目录 专栏导读1.客户端数据管理模块实现2.客户端文件检测模块实现3.客户端文件备份模块设计4.客户端文件备份模块实现 专栏导读 🌸作者简介:花想云 ,在读本科生一枚,C/C领域新星创作者,新星计划导师,阿…...
分享一款基于 AI 的 Chrome 插件
最近使用大模型比较多,公司虽然提供了免费的 ChatGPT 但是需要跳转特定页面才能访问,比较麻烦,于是就想到是否可以开发一款类似于有道词典一样的 Chrome 插件,可以在任意页面使用,虽然市面上也有类似的插件,…...
Spring Authorization Server 1.1 扩展实现 OAuth2 密码模式与 Spring Cloud 的整合实战
目录 前言无图无真相创建数据库授权服务器maven 依赖application.yml授权服务器配置AuthorizationServierConfigDefaultSecutiryConfig 密码模式扩展PasswordAuthenticationTokenPasswordAuthenticationConverterPasswordAuthenticationProvider JWT 自定义字段自定义认证响应认…...
第二证券:AIGC概念活跃,焦点科技、三维通信涨停,万兴科技大涨
AIGC概念24日盘中走势生动,到发稿,万兴科技、三态股份涨超10%,焦点科技、三维通讯、我国科传等涨停,中文在线涨超9%,果麦文明、新国都涨约7%。 消息面上,各大电商途径于10月18-24日先后发动“双11”大促或…...
7-4、S加减速转动实现【51单片机控制步进电机-TB6600系列】
摘要:本节介绍实现步进电机S曲线运动的代码 一、目标功能 实现步进电机转动总角度720,其中加减速各90 加速段:加速类型:S曲线 加速角度:角度为90 起步速度:30RPM, 终止速度&#x…...
RK3568-pcie接口
pcie接口与sata接口 pcie总线pcie总线pcie控制器sata控制器nvme设备sata设备nvme协议ahci协议m-key接口b-key接口RC模式和EP模式 RC和EP分别对应主模式和从模式,普通的PCI RC主模式可以用于连接PCI-E以太网芯片或PCI-E的硬盘等外设。 RC模式使用外设一般都有LINUX驱动程序,安…...
spring监听请求执行结束,移除当前ThreadLocal数据两种方法
在开发过程中,很多时候我们会使用ThreadLocal来临时缓存数据,当一次数据请求执行完成后需要主动执行释放当前ThreadLocal缓存数据资源,防止未能及时释放导致下一次访问时候ThreadLocal依然保持上一次缓存的数据。 spring提供两种方式去监听一…...
知识图谱--Jena基础操作和检索推理应用
在上一篇读书笔记中讲到知识图谱存储主要有基于开源的Jena方式和基于图数据库(Neo4j)方式,本次主要对Jena的基础操作和如何应用进行了实践总结,同时结合了D2R,将结构化数据转换成Jena可以加载的格式(即RDF,后缀是.nt),Apache Jena作为一种开源的Java语义网框架,主要功…...
GEE python——将GEE ASSETS中存储的影像或者矢量转化为数据格式XEE()
数据转换器是内置于 getPixels、computePixels、listFeatures 和 computeFeatures 中的客户端转换能力。通过指定兼容的文件格式,这些方法可以返回 Python 原生格式的数据,如用于栅格的结构化 NumPy 数组和用于矢量的 Pandas DataFrames 或 GeoPandas GeoDataFrames。对于矢量…...
从开发板到自研板:RK3568设备树移植与定制编译实战
1. RK3568设备树移植入门指南 第一次接触RK3568设备树移植的工程师,往往会被dts文件中密密麻麻的节点和属性搞得晕头转向。我刚开始做这块的时候,光是看那7000多行的代码就头疼。但其实只要掌握几个关键点,移植工作就会变得清晰很多。 设备树…...
终极ModEngine2指南:从零开始掌握魂类游戏模组引擎
终极ModEngine2指南:从零开始掌握魂类游戏模组引擎 【免费下载链接】ModEngine2 Runtime injection library for modding Souls games. WIP 项目地址: https://gitcode.com/gh_mirrors/mo/ModEngine2 想要为《黑暗之魂3》或《艾尔登法环》添加自定义内容却苦…...
从绿光到算法:深入解析PPG信号检测的核心技术与实践挑战
1. 绿光背后的秘密:为什么PPG传感器偏爱这种颜色 你可能已经注意到,市面上大多数智能手表的心率监测功能都会发出幽幽的绿光。这可不是为了好看——绿光在PPG(光电容积脉搏波)技术中扮演着关键角色。让我用一个简单的比喻来解释&…...
终极文档下载神器:30+平台一键免费保存,告别繁琐下载流程
终极文档下载神器:30平台一键免费保存,告别繁琐下载流程 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该…...
HTML图片怎么在Firefox中调试对齐_Firefox开发者工具调图方法.txt
连接数爆满主因是线程卡住而非数量多,应重点关注SHOW FULL PROCESSLIST中State非Sleep且Time>60秒的阻塞线程,优先排查应用端连接未释放、监控脚本高频查询及本地进程异常连接。直接看 SHOW PROCESSLIST 里哪些线程在“卡住”连接数爆满&…...
Taotoken用量看板如何帮助团队精细化管控大模型成本
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken用量看板如何帮助团队精细化管控大模型成本 对于团队技术负责人或项目管理者而言,大模型API的调用成本正成为一…...
30ms低延迟投屏终极指南:用QtScrcpy实现专业级手游直播
30ms低延迟投屏终极指南:用QtScrcpy实现专业级手游直播 【免费下载链接】QtScrcpy Android实时投屏软件,此应用程序提供USB(或通过TCP/IP)连接的Android设备的显示和控制。它不需要任何root访问权限 项目地址: https://gitcode.com/barry-ran/QtScrcpy…...
纸张计数技术深度解析:基于STM32与FDC2214的高精度电容传感系统架构剖析
纸张计数技术深度解析:基于STM32与FDC2214的高精度电容传感系统架构剖析 【免费下载链接】2019-Electronic-Design-Competition 【电赛】2019 全国大学生电子设计竞赛 (F题)纸张数量检测装置 (基于STM32F407 & FDC2214 & …...
ARM GIC中断控制器分组机制与安全配置详解
1. GIC中断控制器基础架构解析在ARM架构的嵌入式系统中,通用中断控制器(Generic Interrupt Controller,GIC)扮演着系统中断管理的核心角色。作为连接外设中断与CPU之间的桥梁,GIC的设计直接影响着系统的实时性、安全性…...
5个步骤快速上手:空洞骑士Scarab模组管理器完整使用指南
5个步骤快速上手:空洞骑士Scarab模组管理器完整使用指南 【免费下载链接】Scarab An installer for Hollow Knight mods written with Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab Scarab是一款专为《空洞骑士》玩家设计的免费开源模组管…...
