• 大小: 98.11MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2022-08-07
  • 语言: 其他
  • 标签:

资源简介

KNN算法使用MNIST数据集、0-1二值图集、自写的数字图片集,做手写数字识别的代码,文件夹分类明确。

资源截图

代码片段和文件信息

# -*- coding:utf-8 -*-
# -*- author:zzZ_CMing
# -*- 2017/12/23
# -*- python3.5

import numpy as np
from image import image2onebit as it
import sys
from tensorflow.examples.tutorials.mnist import input_data
import math
import datetime

#KNN算法主体:计算测试样本与每一个训练样本的距离
def get_index(train_datatest_data i):
#1、 np.argmin(np.sqrt(np.sum(np.square(test_data[i]-train_data)axis=1)))
#2、a数组存入:测试样本与每一个训练样本的距离
all_dist = np.sqrt(np.sum(np.square(test_data[i]-train_data)axis=1)).tolist()
return all_dist

#KNN算法主体:计算查找最近的K个训练集所对应的预测值
def get_number(all_dist):
all_number = []
min_index = 0
#print(‘距离列表:‘ all_dist)
for k in range(Nearest_Neighbor_number):
# 最小索引值 = 最小距离的下标编号
min_index = np.argmin(all_dist)
#依据最小索引值(最小距离的下标编号),映射查找到预测值
ss = np.argmax((train_label[min_index])).tolist()
print(‘第‘k+1‘次预测值:‘ss)
#将预测值改为字符串形式存入新元组bb中
all_number = all_number + list(str(ss))
#在距离数组中,将最小的距离值删去
min_number = min(all_dist)
xx = all_dist.index(min_number)
del all_dist[xx]
print(‘预测值总体结果:‘all_number)
return all_number

#KNN算法主体:在K个预测值中,求众数,找到分属最多的那一类,输出
def get_min_number(all_number):
c = []
#将string转化为int,传入新列表c
for i in range(len(all_number)):
c.append(int(all_number[i]))
#求众数
new_number = np.array(c)
counts = np.bincount(new_number)
return np.argmax(counts)


t1 = datetime.datetime.now()      #计时开始
print(‘说明:训练集数目取值范围在[060000]K取值最好<10\n‘ )
train_sum = int(input(‘输入训练集数目:‘))
Nearest_Neighbor_number = int(input(‘选取最邻近的K个值,K=‘))

#依照文件名查找,读取训练与测试用的图片数据集
mnist = input_data.read_data_sets(“./MNIST_data“ one_hot=True)
#取出训练集数据、训练集标签
train_data train_label = mnist.train.next_batch(train_sum)

#调用自创模块内函数read_image():依照路径传入图片处理,将图片信息转换成numpy.array类型
x1_tmp = it.read_image(“png/nnnn.png“)
test_data = it.imageToArray(x1_tmp)
test_data = np.array(test_data)
#print(‘test_data‘test_data)
#调用自创模块内函数show_ndarray():用字符矩阵打印图片
it.show_ndarray(test_data)

#KNN算法主体
all_dist = get_index(train_datatest_data0)
all_number = get_number(all_dist)
min_number = get_min_number(all_number )
print(‘最后的预测值为:‘min_number)

t2=datetime.datetime.now()
print(‘耗 时 = ‘t2-t1)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-01-12 15:59  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\
     目录           0  2018-03-16 10:58  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\
     文件        2855  2018-03-16 10:58  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\28x28+图片+KNN算法手写数字识别.py
     目录           0  2018-03-15 16:57  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\image\
     文件           0  2017-11-01 23:26  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\image\__init__.py
     文件         163  2017-11-02 00:12  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\image\__init__.pyc
     目录           0  2018-03-15 17:05  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\image\__pycache__\
     文件         159  2017-11-02 15:13  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\image\__pycache__\__init__.cpython-34.pyc
     文件         170  2017-12-15 09:13  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\image\__pycache__\__init__.cpython-35.pyc
     文件        1945  2017-11-19 23:47  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\image\__pycache__\image2onebit.cpython-34.pyc
     文件        1965  2018-03-15 17:05  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\image\__pycache__\image2onebit.cpython-35.pyc
     文件         830  2018-03-15 16:57  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\image\image2onebit.py
     文件        1868  2017-11-02 00:12  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\image\image2onebit.pyc
     目录           0  2018-03-08 15:46  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\MNIST_data\
     文件     1648877  2017-11-01 23:26  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\MNIST_data\t10k-images-idx3-ubyte.gz
     文件        4542  2017-11-01 23:26  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\MNIST_data\t10k-labels-idx1-ubyte.gz
     文件     9912422  2017-11-01 23:26  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\MNIST_data\train-images-idx3-ubyte.gz
     文件       28881  2017-11-01 23:26  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\MNIST_data\train-labels-idx1-ubyte.gz
     目录           0  2018-03-16 10:58  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\
     文件         977  2017-11-01 23:26  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\0ps.png
     文件         954  2017-11-01 23:26  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\1ps.png
     文件         222  2017-12-20 17:55  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\2ps.png
     文件         242  2017-12-20 17:53  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\3ps.png
     文件         991  2017-11-01 23:26  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\4ps.png
     文件         237  2017-12-20 18:00  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\5ps.png
     文件        1000  2017-11-01 23:26  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\6ps.png
     文件         226  2017-12-20 17:50  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\7ps.png
     文件        1005  2017-11-01 23:26  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\8ps.png
     文件         426  2018-03-09 11:22  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\9kk.png
     文件         994  2017-11-07 20:24  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\9ps.png
     文件         297  2018-03-15 17:40  监督学习——KNN算法\28x28+图片+KNN算法手写数字识别\A+自己做的\png\aaaa.png
............此处省略93737个文件信息

评论

共有 条评论