【项目实践】:KNN实现手写数字识别(附Python详细代码及注释)

↑ 点击上方【计算机视觉联盟】关注我们

本节使用KNN算法实现手写数字识别。KNN算法基本原理前边文章已经详细叙述,盟友们可以参考哦!

数据集介绍

有两个文件:

(1)trainingDigits文件,包含了大约2000个例子,每个数字大约有200个样本

(2)testDigits文件,包含了大约900个测试数据

数据样式为:

文件夹格式

数字0样式

数字2样式

我们使用 trainingDigits文件中的数据作为训练分类器 ,使用 testDigits文件中的数据测试分类器的效果 KNN算法那实现手写数字识别代码如下:
 1#!/usr/bin/env python
 2# -*- coding:utf-8 -*-
 3import numpy as np
 4# os 模块中导入函数listdir,该函数可以列出给定目录的文件名
 5from os import listdir
 6import operator
 7
 8
 9def img2vector(filename):
10    """实现将图片转换为向量形式"""
11    return_vector = np.zeros((1, 1024))
12    fr = open(filename)
13    for i in range(32):
14        line = fr.readline()
15        for j in range(32):
16            return_vector[0, 32*i + j] = int(line[j])
17    return return_vector
18
19
20# inX 用于分类的输入向量
21# dataSet表示训练样本集
22# 标签向量为labels,标签向量的元素数目和矩阵dataSet的行数相同
23# 参数k表示选择最近邻居的数目
24def classify0(inx, data_set, labels, k):
25    """实现k近邻"""
26    diff_mat = inx - data_set   # 各个属性特征做差
27    sq_diff_mat = diff_mat**2  # 各个差值求平方
28    sq_di
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值