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

简介: 大家好,我是志斌~今天来跟大家分享一下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. 本文仅供学习,不做它用。

相关文章
|
机器学习/深度学习 算法 PyTorch
python手把手搭建图像多分类神经网络-代码教程(手动搭建残差网络、mobileNET)
python手把手搭建图像多分类神经网络-代码教程(手动搭建残差网络、mobileNET)
|
机器学习/深度学习 算法 搜索推荐
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
Machine Learning机器学习之决策树算法 Decision Tree(附Python代码)
|
存储 JSON JavaScript
Python字典和JSON字符串相互转化方法
【2月更文挑战第18天】
804 3
|
Ubuntu 安全 关系型数据库
安装MariaDB服务器流程介绍在Ubuntu 22.04系统上
至此, 您已经在 Ubuntu 22.04 系统上成功地完成了 MariadB 的标准部署流程,并且对其进行基础但重要地初步配置加固工作。通过以上简洁明快且实用性强大地操作流程, 您现在拥有一个待定制与使用地强大 SQL 数据库管理系统。
549 18
|
运维 监控 固态存储
|
11月前
|
人工智能 数据挖掘 数据处理
构建AI智能体:五、Pandas常用函数介绍,CodeBuddy智能化处理Excel数据实例
Pandas是Python核心数据分析库,提供Series、DataFrame等灵活数据结构,支持高效的数据读写、清洗、筛选、合并与统计操作,广泛应用于数据处理与分析场景。
885 4
|
机器学习/深度学习 自动驾驶 计算机视觉
使用Python实现简单的图像识别
【8月更文挑战第31天】在本文中,我们将探索如何使用Python语言和其强大的库来创建一个简单的图像识别系统。通过逐步指导,我们将了解如何准备图像数据,选择和训练模型,以及评估我们的成果。无论你是机器学习的初学者还是希望扩展你的技能集,这篇文章都将为你提供实用的知识和代码示例。
|
机器学习/深度学习 JSON PyTorch
图神经网络入门示例:使用PyTorch Geometric 进行节点分类
本文介绍了如何使用PyTorch处理同构图数据进行节点分类。首先,数据集来自Facebook Large Page-Page Network,包含22,470个页面,分为四类,具有不同大小的特征向量。为训练神经网络,需创建PyTorch Data对象,涉及读取CSV和JSON文件,处理不一致的特征向量大小并进行归一化。接着,加载边数据以构建图。通过`Data`对象创建同构图,之后数据被分为70%训练集和30%测试集。训练了两种模型:MLP和GCN。GCN在测试集上实现了80%的准确率,优于MLP的46%,展示了利用图信息的优势。
880 1
|
搜索推荐 Linux iOS开发
打造个人听书神器:使用pyttsx3实现文字转语音
在这个信息时代,利用Python的pyttsx3库,可以轻松将文字转化为语音,制作个人听书工具。本文介绍pyttsx3的安装与使用,以及如何通过编程实现小说文本的语音化,提供个性化阅读体验。
1367 0
|
机器学习/深度学习 数据采集 算法
Python实现GBDT(梯度提升树)回归模型(GradientBoostingRegressor算法)项目实战
Python实现GBDT(梯度提升树)回归模型(GradientBoostingRegressor算法)项目实战

热门文章

最新文章