阿旭机器学习实战【5】KNN算法实战练习2:利用KNN模型进行手写体数字识别

本文涉及的产品
模型训练 PAI-DLC,100CU*H 3个月
交互式建模 PAI-DSW,每月250计算时 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介: 阿旭机器学习实战【5】KNN算法实战练习2:利用KNN模型进行手写体数字识别

1. 数据集说明


手写体数字识别数据集共有5000个样本图片。包含0-9这10个数字类别,每个数字为一个文件夹,每个文件夹下存放500张该数字的图片。


图片信息:

图片大小:像素为28 * 28

图片类型:二维灰度图片,每个数字的数值范围为0-255

3e97b8adc3824859a9f03fc5142876bf.jpg

31d9c5ae4080417c9dbad66148f7a9c8.jpg


2. 读取数据并查看数据信息


import numpy as np
import matplotlib.pyplot as plt
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
%matplotlib inline
# 读取一个图片数据,并查看形状
z = plt.imread("./data/0/0_1.bmp")
z.shape
(28, 28)
plt.figure(figsize=(1,1))
plt.imshow(z,cmap="gray")

5d0a5a36fa93437f8335a57cf6e00200.png

3. 加载所有图片数据并进行处理


# 读取所有的图片,并且给这些图片加上标签
data = [] # 用于存放图片的数据
target = [] # 用于存放图片对应的标签
for i in range(10):
    for j in range(1,501):
        im = plt.imread("./data/%d/%d_%d.bmp"%(i,i,j))
        # 把读取到的图片的数据存放
        data.append(im)
        # 把图片对应的标签存储
        target.append(i)
# 由于sklearn不接受列表数据,我们需要把data和target转化成数组
data = np.array(data)
target = np.array(target)
# 查看数据形状
data.shape
• 1
• 2


(5000, 28, 28)


# 将二维图片数据点展开成一维数据,28 * 28 = 784
data_res = data.reshape(5000,-1)
data_res.shape
• 1
• 2
• 3


(5000, 784)



4. 构建模型并进行预测


# 切分数据
x_train,x_test,y_train,y_test = train_test_split(data_res,target,test_size=0.02)
# 构建模型
knn = KNeighborsClassifier()
# 对模型进行训练
knn.fit(x_train,y_train)
# 查看模型的准确度
knn.score(x_test,y_test)


0.92
• 1


模型预测准确率为92%


5. 用图像来展示预测的数字和其预测情况


# 利用模型对测试数据进行预测
y_ = knn.predict(x_test)


plt.figure(figsize=(10*2,10*1))
# 打印出预测错误的数据进行查看
error_num = 0
for i in range(100):
    axes = plt.subplot(2,10,error_num+1)
    if y_[i] != y_test[i]:
        axes.imshow(x_test[i].reshape(28,28),cmap="gray")
        axes.axis("off")
        axes.set_title("True:%d\nPredict:%d"%(y_test[i],y_[i]))
        error_num += 1
    if error_num == 20:
        break

2e51b68a37e6471f8501ef61a3ccbee2.png


6. 将算法保存到本地


# joblib这个模块可以将训练成熟的算法保存到本地,下次再用的时候,不需要再次训练
from sklearn.externals import joblib
# 将上面的knn这个模型保存到本地,会在本地生成一个模型文件
joblib.dump(knn,"./digist_reco.m") # 将knn模型打包成一个本地的静态文件
• 1
• 2
['./digist_reco.m']

# 加载本地算法
d = joblib.load("./digist_reco.m")
• 1
• 2
# 进行预测
d.predict(x_test[:10])

array([1, 6, 5, 1, 9, 8, 0, 8, 9, 3])
• 1
# 同样我们也可以将数组打包到本地,生成.npy文件,加载就用np.load('文件路径')
np.save("./11",data_res)
相关文章
|
1月前
|
机器学习/深度学习 人工智能 JSON
【解决方案】DistilQwen2.5-R1蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践
阿里云的人工智能平台 PAI,作为一站式的机器学习和深度学习平台,对DistilQwen2.5-R1模型系列提供了全面的技术支持。无论是开发者还是企业客户,都可以通过 PAI-ModelGallery 轻松实现 Qwen2.5 系列模型的训练、评测、压缩和快速部署。本文详细介绍在 PAI 平台使用 DistilQwen2.5-R1 蒸馏模型的全链路最佳实践。
|
10天前
|
人工智能 JSON 算法
【解决方案】DistilQwen2.5-DS3-0324蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践
DistilQwen 系列是阿里云人工智能平台 PAI 推出的蒸馏语言模型系列,包括 DistilQwen2、DistilQwen2.5、DistilQwen2.5-R1 等。本文详细介绍DistilQwen2.5-DS3-0324蒸馏小模型在PAI-ModelGallery的训练、评测、压缩及部署实践。
|
18天前
|
人工智能 运维 API
PAI-Model Gallery云上一键部署阶跃星辰新模型Step1X-Edit
4月27日,阶跃星辰正式发布并开源图像编辑大模型 Step1X-Edit,性能达到开源 SOTA。Step1X-Edit模型总参数量为19B,实现 MLLM 与 DiT 的深度融合,在编辑精度与图像保真度上实现大幅提升,具备语义精准解析、身份一致性保持、高精度区域级控制三项关键能力;支持文字替换、风格迁移等11 类高频图像编辑任务类型。在最新发布的图像编辑基准 GEdit-Bench 中,Step1X-Edit 在语义一致性、图像质量与综合得分三项指标上全面领先现有开源模型,比肩 GPT-4o 与 Gemin。PAI-ModelGallery 支持Step1X-Edit一键部署方案。
|
1月前
|
人工智能 算法 网络安全
基于PAI+专属网关+私网连接:构建全链路Deepseek云上私有化部署与模型调用架构
本文介绍了阿里云通过PAI+专属网关+私网连接方案,帮助企业实现DeepSeek-R1模型的私有化部署。方案解决了算力成本高、资源紧张、部署复杂和数据安全等问题,支持全链路零公网暴露及全球低延迟算力网络,最终实现技术可控、成本优化与安全可靠的AI部署路径,满足企业全球化业务需求。
|
14天前
|
缓存 并行计算 测试技术
阿里云PAI-全模态模型Qwen2.5-Omni-7B推理浅试
阿里云PAI-全模态模型Qwen2.5-Omni-7B推理浅试
124 12
|
1月前
|
机器学习/深度学习 存储 算法
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
本文系统讲解从基本强化学习方法到高级技术(如PPO、A3C、PlaNet等)的实现原理与编码过程,旨在通过理论结合代码的方式,构建对强化学习算法的全面理解。
85 10
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
|
18天前
|
人工智能 自然语言处理 运维
Qwen3 全尺寸模型支持通过阿里云PAI-ModelGallery 一键部署
Qwen3 是 Qwen 系列最新一代的大语言模型,提供了一系列密集(Dense)和混合专家(MOE)模型。目前,PAI 已经支持 Qwen3 全系列模型一键部署,用户可以通过 PAI-Model Gallery 快速开箱!
|
10天前
|
算法 数据安全/隐私保护
基于GA遗传算法的悬索桥静载试验车辆最优布载matlab仿真
本程序基于遗传算法(GA)实现悬索桥静载试验车辆最优布载的MATLAB仿真(2022A版)。目标是自动化确定车辆位置,使加载效率ηq满足0.95≤ηq≤1.05且尽量接近1,同时减少车辆数量与布载时间。核心原理通过优化模型平衡最小车辆使用与ηq接近1的目标,并考虑桥梁载荷、车辆间距等约束条件。测试结果展示布载方案的有效性,适用于悬索桥承载能力评估及性能检测场景。
|
10天前
|
算法 机器人 数据安全/隐私保护
基于双向RRT算法的三维空间最优路线规划matlab仿真
本程序基于双向RRT算法实现三维空间最优路径规划,适用于机器人在复杂环境中的路径寻找问题。通过MATLAB 2022A测试运行,结果展示完整且无水印。算法从起点和终点同时构建两棵随机树,利用随机采样、最近节点查找、扩展等步骤,使两棵树相遇以形成路径,显著提高搜索效率。相比单向RRT,双向RRT在高维或障碍物密集场景中表现更优,为机器人技术提供了有效解决方案。
|
1月前
|
存储 算法 调度
基于和声搜索优化算法的机器工作调度matlab仿真,输出甘特图
本程序基于和声搜索优化算法(Harmony Search, HS),实现机器工作调度的MATLAB仿真,输出甘特图展示调度结果。算法通过模拟音乐家即兴演奏寻找最佳和声的过程,优化任务在不同机器上的执行顺序,以最小化完成时间和最大化资源利用率为目标。程序适用于MATLAB 2022A版本,运行后无水印。核心参数包括和声记忆大小(HMS)等,适应度函数用于建模优化目标。附带完整代码与运行结果展示。

热门文章

最新文章

相关产品

  • 人工智能平台 PAI