基于KNN分类算法手写数字识别的实现(一)——蛮力实现

本文介绍了如何使用KNN算法实现手写数字识别,详细讲解了处理28*28像素的黑白位图过程,通过计算欧氏距离找到K个最近邻进行多数表决预测。提供数据下载链接并展示程序生成训练集和测试集的过程。最后,展示了算法运行的精确度和耗时情况。
摘要由CSDN通过智能技术生成

KNN邻近算法可用于分类,也可用于回归,具体的原理介绍参考博文http://www.cnblogs.com/v-July-v/archive/2012/11/20/3125419.html

本篇主要包括:手写数字图片的识别和KNN的实现。因为KNN分类算法通过距离来确定最近邻。距离算法有欧氏距离、曼哈顿距离和闵可夫斯基距离等,本篇主要使用欧氏距离。

D(x,y)=\sqrt{(x_{1} - y_{1})^{^{2}}+(x_{2} - y_{2})^{^{2}}+...+(x_{n} - y_{n})^{^{2}}}=\sqrt\\\sum _{i=1}^{n}\left ( (x_{i} - y_{i})^{^{2}} \right )

 通过找到K个最近邻做预测,计算预测样本和所有训练集中样本的距离,计算出最小的k个距离,然后多数表决。

(一)处理手写数字图片

数据下载地址:https://pan.baidu.com/s/1c1GXdJi

样本图片都为底色为黑色,手写数字为白色的位图(.bmp格式),而且图片大小固定,为28*28pi

处理方法:

  • 计算每个像素点位置的rgb值,rgb(0,0,0)为纯黑色,rgb(255,255,255)为纯白色;
  • 将所有像素点的颜色处理成'“0”和“1”的数值,黑色处理为数字‘1’,白色处理为数字‘0’
  • 然后将每个像素点的数值写入文本文件。

抽样生成测试集数据文件和训练集数据文件。

代码:

import os
import datetime
import numpy as np
from numpy import *
from PIL import Image
import pandas as pd
import traceback


#图片处理函数
def Picture_handle(file_route, final_route):
    
    img = Image.open(fi
  • 0
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值