python机器学习(手写数字识别)
# 导包
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
import joblib
from collections import Counter
# 1. 定义函数 show_digit(idx), 用于查看: 数字图片.
def show_digit(idx):
# idx: 行索引, 即: 要哪行的数据.
# 1. 读取数据, 获取df对象.
data = pd.read_csv('data/手写数字识别.csv')
# 细节: 非法值校验.
if idx < 0 or idx > len(data) - 1 :
return
# 2. 获取数据, 即: 特征 + 标签
x = data.iloc[:, 1:]
y = data.iloc[:, 0]
# 3. 查看下数据集.
print(f'x的维度: {x.shape}') # (42000, 784)
print(f'y的各分类数量: {Counter(y)}') # Counter({1: 4684, 7: 4401, 3: 4351, 9: 4188, 2: 4177, 6: 4137, 0: 4132, 4: 4072, 8: 4063, 5: 3795})
# 4. 获取具体的 某张图片, 即: 某行数据 => 样本数据.
# step1: 把图片转成 28 * 28像素(二维数组)
digit = x.iloc[idx].values.reshape(28, 28)
# step2: 显示图片.
plt.imshow(digit, cmap='gray') # 灰色显示 => 灰度图
# step3: 取消坐标显示.
plt.axis('off')
# step4: 显示图片
plt.show()
# 2. 定义函数 train_model(), 用于训练模型.
def train_model():
# 1. 读取数据, 获取df对象.
data = pd.read_csv('data/手写数字识别.csv')
# 2. 获取数据, 即: 特征 + 标签
x = data.iloc[:, 1:]
y = data.iloc[:, 0]
# 3. 数据的预处理.
# step1: x轴(像素点)的 归一化处理.
x = x / 255
# step2: 区分训练集和测试集. stratify: 按照y的类别比例进行分割
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, stratify=y, random_state=21)
# 4. 训练模型.
estimator = KNeighborsClassifier(n_neighbors=3)
estimator.fit(x_train, y_train)
# 5. 模型预估, 评测正确率.
my_score = estimator.score(x_test, y_test)
print(f'模型预估正确率: {my_score}') # 0.9657142857142857
# 6. 保存模型.
joblib.dump(estimator, 'model/knn.pth')
# 3. 定义use_model()函数, 用于: 测试模型.
def use_model(): # pytest
# 1. 加载图片.
img = plt.imread('data/demo.png') # 28 * 28像素
plt.imshow(img, cmap='gray') # 灰度图
plt.show()
# 2. 加载模型.
estimator = joblib.load('model/knn.pth')
# 3. 预测图片.
img = img.reshape(1, -1) # 效果等价于: reshape(1, 784)
y_test = estimator.predict(img)
print(f'预测的数字是: {y_test}')
# 4. 在main函数中测试.
if __name__ == '__main__':
# 显示数字图片.
# show_digit(10)
# show_digit(21)
# 训练模型
# train_model()
# 测试模型
use_model()
相关文章:
python机器学习(手写数字识别)
# 导包 import matplotlib.pyplot as plt import pandas as pd from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier import joblib from collections import Counter # 1. 定义函数 show_digit(idx), 用于查看: 数字图…...
如何针对项目中的技术难点准备面试?——黑马点评为例
最核心的,包装和准备 个人项目,怎么包装?一定要写出代码才可以吗? 你可以在系统A中实现就可以,了解其中实现的细节,怎么跟面试官对线等等,这些话术到位了之后,再把它融入到系统B&a…...
ARP欺骗的多种手法
学习参考: ARP欺骗的各种d玩法-CSDN博客 https://juejin.cn/post/7383702153892954164 一、什么是ARP欺骗 1.什么是ARP? ARP (Address Resolution Protocol) 是一种网络层协议,用于将 IP 地址转换为物理地址(MAC 地址࿰…...
HCIA——one
推荐电影:《模仿游戏》《黑客帝国》《头号玩家》 图灵机每秒五千次计算,当今计算机4080ti算力每秒21万亿次的计算。 OSI七层模型 应用层:人机交互,将抽象语言转换成编码 表示层:将编码转换成二进制 介质访问控制层…...
【vue】⾃定义指令+插槽+商品列表案例
代码获取 07-⾃定义指令插槽商品列表案例 ⼀、⾃定义指令 1. 基本使⽤ 1.1 指令介绍 内置指令:v-model、v-for、v-bind、v-on… 这都是Vue给咱们内置的⼀些指令,可以直接使⽤ ⾃定义指令:同时Vue也⽀持让开发者,⾃⼰注册⼀些…...
多线程——线程的等待通知
目录 前言 一、wait() 方法 1.方法介绍 2.代码示例 3.wait 和 sleep 的区别 二、notify() 方法 1.方法介绍 2.代码示例 三、notifyAll() 方法 1.方法介绍 2.代码示例 结尾 前言 由于线程之间是抢占式执行的,因此线程之间的执行顺序是难以预知的…...
模态与非模态的对话框
本文学习自: 《Qt Creato快速入门》 #include "widget.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); }1. #include "widget.h" #include "ui_w…...
C语言练习
题目: 1.运用switch选择语句,编写一段C语言,请根据输入的数字,显示相应的星期日,如果数字所对应的星期日并不存在请显示“抱歉,您输入的内容并不存在。” 分析:1.在本题中,要运用到…...
CyberRt实践之Hello Apollo(Apollo 9.0版本)
apollo9.0环境安装参考官方网站 apollo.baidu.com/community/Apollo-Homepage-Document?docBYFxAcGcC4HpYIbgPYBtXIHQCMEEsATAV0wGNkBbWA5UyRFdZWVBEAU0hFgoIH0adPgCY%2BADwCiAVnEAhAILiAnABZxEgOzK1Y%2BQA51M3ROUnJBsbK2WZoyUdkBhcXoAMhlwDFlARnUXZdzE9AGY%2BbFINADYpUhCEFW…...
【JavaScript】LeetCode:61-65
文章目录 61 课程表62 实现Trie(前缀树)63 全排列64 子集65 电话号码的字母组合 61 课程表 Map BFS拓扑排序:将有向无环图转为线性顺序。遍历prerequisites:1. 数组记录每个节点的入度,2. 哈希表记录依赖关系。n 6&a…...
【SpringAI】(一)从实际场景入门大模型——适合Java宝宝的大模型应用开发
一、简单场景介绍 假设你需要为一个商城项目接入一个基于SpringAI的智能客服系统,现在我们来基本模拟一下: 当我通过系统提问,大模型会针对我的问题进行回答。 当我们通过程序提问时,SpringAI会将我们的提问封装成Prompts&#x…...
植物大战僵尸杂交版
最新版植物大战僵尸杂交版 最近本款游戏火爆 下载资源如下: win版本:2.3.7 链接:下载地址 提取码:9N3P Mac(苹果版本):2.0.0 链接:下载地址 提取码:Bjaa 介绍ÿ…...
live2d 实时虚拟数字人形象页面显示,对接大模型
live2dSpeek 测试不用gpu可以正常运行 https://github.com/lyz1810/live2dSpeek 运行的话还需要额外下载https://github.com/lyz1810/edge-tts支持语音 ## 运行live2dSpeek >npm install -g http-server >http-server . ## 运行edge-tts python edge-tts.py...
SpringCloud-持久层框架MyBatis Plus的使用与原理详解
在现代微服务架构中,SpringCloud 是一个非常流行的解决方案。而在数据库操作层面,MyBatis Plus 作为 MyBatis 的增强工具,能够简化开发,提升效率,特别是在开发企业级应用和分布式系统时尤为有用。本文将详细介绍 MyBat…...
Servlet的HttpServletRequest
HttpServletRequest是Java Servlet规范中定义的一个接口,它表示客户端向服务器发送的请求,并提供了与HTTP请求相关的方法和属性。 getSession方法():用于获取与当前请求相关联的HttpSession对象。 setAttribute(String name, Object value)…...
U9销售订单不能带出最新价格出来
业务员突然说系统带不出来销售价格。了解之后,不是带不出来价格,是做了价格调整之后,最新价格没有匹配出来,带出来的价格是历史价格。检查,分析相关的单据,生效日期,失效日期,审核状…...
Jmeter接口测试企业级项目实战day1
1.接口测试 接口测试工具: JMeter:支持多种接口类型,还能测试性能,开源,开源进行二次扩展。 Postman:简单,方便,局限性比较大,适合开发临时行调试 APIFox等:新…...
接口测试面试题含答案
1、解释一下正向和逆向测试。 正向测试:针对接口设计预期的功能和行为,验证接口是否按照预期工作。 逆向测试:针对错误输入、不合理的条件或非预期的使用方式,验证接口是否能够适当地处理这些情况并提供合理的错误处理。 2、什…...
横板营业执照提取生成
前言 有一段时间没发博客了,今天分享下几个月前做的营业执照提取器UI 预览图 框架 b-ui很好用,这个前端框架作者 发布的插件我都会用,鱿鱼助手也是基于这个框架开发的 代码 html <template><view><template><view…...
webm格式怎么转换成mp4?这5种转换方法很好用
现如今,视频格式繁多,而webm作为一种由谷歌开发的视频格式,以其高画质和低带宽需求著称。然而,并非所有设备和播放器都完美支持webm格式,这时将其转换为兼容性更强的MP4格式就显得尤为重要。下面给大家分享5种非常简单…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动
一、前言说明 在2011版本的gb28181协议中,拉取视频流只要求udp方式,从2016开始要求新增支持tcp被动和tcp主动两种方式,udp理论上会丢包的,所以实际使用过程可能会出现画面花屏的情况,而tcp肯定不丢包,起码…...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
