↑ 点击上方【计算机视觉联盟】关注我们
本节使用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
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



