基于机器学习knn算法的手写拼音识别

您所在的位置:网站首页 时尚钻石烟多少钱一包 基于机器学习knn算法的手写拼音识别

基于机器学习knn算法的手写拼音识别

#基于机器学习knn算法的手写拼音识别| 来源: 网络整理| 查看: 265

简单介绍一下knn算法 KNN算法,也叫K最近邻算法。功能是分类。算法逻辑非常简单,说直白点就是:先找到跟你最近的k个邻居(假设k=5),再看你的邻居给哪个类别投票(即邻居的标签),少数服从多数,得票最多的结果就是你的类别。

在这个算法中最关键的三点:

k值 :选择距离最近的k个邻居。 距离计算:计算距离的方法有欧式距离和曼哈顿距离,本文采用欧式距离,即先求差值的平方和,再开根号。 分类标签:本文的分类标签即a,b,c,d等字母

2.Python实现KNN ''' k:k值 testdata:测试数据集 traindata:训练数据集 labels:分类标签 ''' def knn(k, testdata, traindata, labels): '''定义算法''' traindatasize = traindata.shape[0] #计算训练集的长度 dif = tile(testdata,(traindatasize,1)) - traindata #将测试集扩展至训练集的长度,再求差值 sqrdif = dif**2 #求差值的平方 sumsqrdif = sqrdif.sum(axis=1) #求平方和 distance = sumsqrdif**0.5 #再开根号,即所有的距离 sorted_distance = distance.argsort() #对距离进行排序,返回排序后的索引 count = {} #准备一个空字典,存放投票结果 for i in range(0,k): vote = labels[sorted_distance[i]] #提取索引多对应的标签值作为字典的key count[vote] = count.get(vote,0)+1 #票数作为字典的value sorted_count = sorted(count.items(),key=lambda x:x[1],reverse=True) #对最后的投票结果进行排序 return sorted_count[0][0] #返回得票最多的标签 二、准备数据

我陈悦用最笨的方法,花了一些时间,手写了一批png格式的数字图片:

ps:此处感谢陈悦同学的辛苦付出.

图片的尺寸都是统一的:32*32像素 图片的命名也是统一的:数字标签+"_"+第n张图+“.png"

2、将图片转换成数组矩阵

训练数据集与测试数据集都是标准化后的数组矩阵,而我们的试验对象是手写体数字图片,首先需要将图片进行一下数据化处理。

def img2Model(originDataPath, modelpath): list = os.listdir(originDataPath) for child in list: s_list = os.listdir(originDataPath + child) for i in s_list: filepath=originDataPath + child + '/' + i # print(filepath) img = cv2.imdecode(np.fromfile(filepath, dtype=np.uint8),0) img = cv2.resize(img, (32, 32)) img = np.asarray(img) img[img > 127] = 255 img[img


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3