实战案例|手写数字识别模型~

简介: 大家好,我是志斌~今天来跟大家分享一下K近邻算法的原理以及通过识别手写数字模型来看如何用Python实现它。

01原理


K近邻算法又称KNN算法,是非常经典的机器学习算法,它的原理十分简单:对于一个新样本,计算出它距离其他样本点的距离,然后选取K个数,这K个数大多数属于哪个类别,则新样本也属于这个类别。


如下图,绿色的小球是新样本,当K=3时,样本点有两个三角形和一个正方形,所以我们可以认为新样本属于三角形;当K=5时,样本点有三个正方向和两个三角形,所以我们可以认为新样本属于正方形;同理可得,当K=11时,新样本属于正方形。


80.png计算两点间的距离,可以直接使用两点间距离公式:

81.png

n维空间的两点间距离公式为:

82.png

02搭建模型


通过搭建一个手写数字识别模型来讲解如何用Python使用K近邻算法。(ps:本章涉及到图像识别部分知识,因为篇幅原因将放到下篇文章进行分享。)


首先读取数据进行查看。


# 1.读取数据
import pandas as pd
df = pd.read_excel('手写字体识别.xlsx')



83.png

第一列是手写数字,其余每一列则是手写数字的二值化处理后的值。


开始设置特征变量和目标变量。


X = df.drop(columns='对应数字') 
Y = df['对应数字']


对数据集进行划分,其中20%的数据为测试集,80%的数据为训练集。


from sklearn.model_selection import train_test_split
X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_si



84.png


85.png


现在对已经划分好的数据集进行训练。


from sklearn.neighbors import KNeighborsClassifier as KNN
knn = KNN(n_neighbors=5) 
knn.fit(X_train, Y_train)


对模型用测试集进行测试


Y_pred = knn.predict(X_test)


查看一下预测的准确度。


from sklearn.metrics import accuracy_score
score = accuracy_score(Y_pred,Y_test)


预测准确度为:


86.png

03模型优化


模型搭建好后,我们还可以对n_neighbors参数进行调优,从而进一步优化模型。


from sklearn.model_selection import GridSearchCV
params = {'n_neighbors':[1,2,3,4,5,6,7,8,9]}
knn = KNN()
grid_search = GridSearchCV(knn,params,cv=5)
grid_search.fit(X_train,Y_train)
grid_search.best_params_


n_neighbors参数最优值为:


87.png

04小结


1. 本文介绍了K近邻算法,并通过识别手写数字模型来看如何用Python实现它。

2. 本文仅供学习,不做它用。

相关文章
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
存储 JSON JavaScript
Python字典和JSON字符串相互转化方法
【2月更文挑战第18天】
823 3
|
Ubuntu 安全 关系型数据库
安装MariaDB服务器流程介绍在Ubuntu 22.04系统上
至此, 您已经在 Ubuntu 22.04 系统上成功地完成了 MariadB 的标准部署流程,并且对其进行基础但重要地初步配置加固工作。通过以上简洁明快且实用性强大地操作流程, 您现在拥有一个待定制与使用地强大 SQL 数据库管理系统。
594 18
|
5月前
|
小程序 前端开发 JavaScript
圈子小程序平台搭建技术选型以及功能模块设计构建自己的社交论坛圈子(附代码演示)
打造专属社交论坛小程序?行业主流方案:Uni-app(Vue)+ ThinkPHP 6,一套代码覆盖小程序/H5/APP,多端同步、开发快、成本低,含圈子、发帖、IM、支付等全功能模块。
377 0
圈子小程序平台搭建技术选型以及功能模块设计构建自己的社交论坛圈子(附代码演示)
|
运维 监控 固态存储
|
8月前
|
机器学习/深度学习 人工智能 编解码
大模型应用:CLIP 模型全维度解析:理解理论基础强化基础范例.16
CLIP是OpenAI提出的跨模态模型,通过对比学习将图像与文本映射至统一语义空间,实现零样本图文对齐。无需微调即可完成图像分类、图文检索等任务,显著降低标注成本,成为多模态AI的核心基础。
3439 21
|
人工智能 数据挖掘 数据处理
构建AI智能体:五、Pandas常用函数介绍,CodeBuddy智能化处理Excel数据实例
Pandas是Python核心数据分析库,提供Series、DataFrame等灵活数据结构,支持高效的数据读写、清洗、筛选、合并与统计操作,广泛应用于数据处理与分析场景。
948 4
|
Linux 虚拟化 iOS开发
部署06--MacOS安装VMware Fusion安装
部署06--MacOS安装VMware Fusion安装
|
机器学习/深度学习 算法 数据建模
决策树(Decision Tree)算法详解及python实现
决策树(Decision Tree)算法详解及python实现
4075 0
决策树(Decision Tree)算法详解及python实现
|
API 语音技术 开发者
用python实现文字转语音的5个较好用的模块
这篇文章介绍了五个Python模块:gtts、pyttsx3、baidu-aip、pywin32和speech,它们能够实现文本到语音的转换功能。
1884 1

热门文章

最新文章