其他实现手写数字识别的方法:
1.KNN实现手写数字识别
2. 卷积神经网络(CNN)实现手写数字识别
3. 全连接神经网络实现手写数字识别
4. 聚类(K-means)实现手写数字识别-2

  1. 实验数据是老师收集了所有人的手写数字图片,且经过处理将图像生成了.txt文件,如何生成点击这,如下图

  2. 代码实现
    代码修改自sklearn官方给出的代码,在读取数据时发生了改变,增加了几个函数,因为用的是自己的数据,而且sklearn是自带很多数据集的

import numpy as np
from sklearn.cluster import KMeans
from sklearn import metrics
from os import listdir# 因为你的数据是自己的数据,所以才会有前三个方法:img2vector(), getLabel(),
# getData()用来获取数据,数据标签和处理数据。如果你用的是mnist数据集
# 或者是sklearn中自带的数据集,则直接加载即可"""
函数说明:将32x32的二进制图像转换为1x1024向量
"""
def img2vector(filename):# 创建1x1024零向量returnVect = np.zeros((1, 1024))# 打开文件fr = open(filename)# 按行读取for i in range(32):# 读一行数据lineStr = fr.readline()# 每一行的前32个元素依次添加到returnVect中for j in range(32):returnVect[0, 32 * i + j] = float(lineStr[j])# 返回转换后的1x1024向量return returnVect'''
函数说明:获取标签
'''
def getLabel(Datapath):# 训练集的LabelshwLabels = []# 返回Datapath目录下的文件名trainingFileList = listdir(Datapath)# 返回文件夹下文件的个数m = len(trainingFileList)# 从文件名中解析出训练集的类别for i in range(m):# 获得文件的名字fileNameStr = trainingFileList[i]# 获得分类的数字classNumber = int(fileNameStr.split('_')[0])# 将获得的类别添加到hwLabels中hwLabels.append(classNumber)return hwLabels'''
函数说明:获取数据
'''
def getData(Datapath):# 返回train目录下的文件名trainingFileList = listdir(Datapath)# 返回文件夹下文件的个数m = len(trainingFileList)# 初始化训练的Mat矩阵,训练集trainingMat = np.zeros((m, 1024))for i in range(m):# 获得文件的名字fileNameStr = trainingFileList[i]# 将每一个文件的1x1024数据存储到trainingMat矩阵中trainingMat[i, :] = img2vector(Datapath+'/%s' % (fileNameStr))return trainingMat# -------------load data
# 加载数据
train_images = getData('train')
test_images = getData('testless')
train_labels = getLabel('train')
test_labels = getLabel('testless')# -------------training
# initialize,and set cluster nums
kmeans = KMeans(n_clusters=10)
kmeans.fit(train_images)
y_pred = kmeans.predict(test_images)# -------------performance measure by ARI(Adjusted Rand Index)
print(metrics.adjusted_rand_score(test_labels, y_pred))
  1. 还有一个K-means实现手写数字识别的代码,我过段时间再分享

聚类(K-means)实现手写数字识别相关推荐

  1. 第7-3课:K 最邻近算法(KNN)与手写数字识别

    K 最近邻(KNN,K-Nearest Neighbor)算法是一类在数据挖掘领域常用的分类算法,该算法看似神秘,其实原理很简单,算法实现也很简单.KNN 算法在类别决策时,只参考极少量的相邻样本,也 ...

  2. k近邻算法_图穷匕见:K近邻算法与手写数字识别

    机器学习算法是从数据中产生模型,也就是进行学习的算法.我们把经验提供给算法,它就能够根据经验数据产生模型.在面对新的情况时,模型就会为我们提供判断(预测)结果.例如,我们根据"个子高.腿长. ...

  3. 模式识别和机器学习实战-K近邻算法(KNN)- Python实现 - 约会网站配对效果判断和手写数字识别

    文章目录 前言 一. k-近邻算法(KNN) 1.算法介绍 2.举个例子--电影分类 3.步骤描述 4.来了--代码实现 二.实战之约会网站配对效果判断 1.导入数据 2.分析数据 3.数据归一化 4 ...

  4. 2 机器学习 K近邻算法(KNN) 学习曲线 交叉验证 手写数字识别

    机器学习 1 K-近邻算法介绍 1.1 分类问题 分类问题:根据已知样本的某些特征,判断一个未知样本属于哪种样本类别. 与回归问题相比,分类问题的输出结果是离散值,用于指定输入的样本数据属于哪个类别. ...

  5. 手把手入门神经网络系列(2)_74行代码实现手写数字识别

    作者: 龙心尘&&寒小阳  时间:2015年12月.  出处:  http://blog.csdn.net/longxinchen_ml/article/details/5028124 ...

  6. [Kaggle] Digit Recognizer 手写数字识别(卷积神经网络)

    文章目录 1. 使用 LeNet 预测 1.1 导入包 1.2 建立 LeNet 模型 1.3 读入数据 1.4 定义模型 1.5 训练 1.6 绘制训练曲线 1.7 预测提交 2. 使用 VGG16 ...

  7. Python(TensorFlow框架)实现手写数字识别系统

    手写数字识别算法的设计与实现 本文使用python基于TensorFlow设计手写数字识别算法,并编程实现GUI界面,构建手写数字识别系统.这是本人的本科毕业论文课题,当然,这个也是机器学习的基本问题 ...

  8. Python TensorFlow框架 实现手写数字识别系统

    手写数字识别算法的设计与实现 本文使用python基于TensorFlow设计手写数字识别算法,并编程实现GUI界面,构建手写数字识别系统.这是本人的本科毕业论文课题,当然,这个也是机器学习的基本问题 ...

  9. 机器学习笔记——从手写数字识别开始

    文章目录 前言 关于这篇博客(预计八月下旬全部完成) 关于项目实现 监督学习 ANN全连接神经网络的实现 1.总述 2.初始化 3.传播及损失 4.反向传播 决策树以及随机森林的实现 1.总述 2.单 ...

最新文章

  1. linux中DNS的介绍及DNS的高速缓存
  2. c# Application.DoEvents
  3. 数学--数论--莫比乌斯函数
  4. Flex读取XML不刷新问题
  5. python截图直接在内存里调用_Python-按块上传FTP中的内存文件(由API调用生...
  6. 线性代数在计算机视觉的应用,10种线性代数在数据科学中的强大应用(内附多种资源)...
  7. php PHP命令行脚本接收传入参数的三种方式
  8. 弹性力学方程 有限差分法matlab,泊松方程的有限差分法的MATLAB实现
  9. (新)OpenCV配置visual studio2019详细教程
  10. 使用phpquery采集小说
  11. 安装最好用的计算机软件,装机软件哪个好?教您最好的装机软件推荐
  12. 程序员的自我修养(收藏)
  13. 伽罗华有限域_有限域 伽罗瓦域
  14. 2019年 电赛C题 全国大学生电子设计竞赛试题解析与总结
  15. ARP报文目的MAC为什么不是广播地址?
  16. HBuilder快捷键整理集合
  17. 软件工程小项目~企业员工信息管理系统-需求分析~~
  18. 止咳绝招 献给身边咳嗽的人
  19. noip2016普及组初赛中山市成绩表及分数线
  20. RedHat 5 环境下 DHCP配置详解。

热门文章

  1. 浅谈Selenium之WebUI自动化
  2. 基于主轴变换的医学图像倾斜校正
  3. 快速寻找勾股数算法的实现和优化
  4. 怎么恢复电脑删除的文件,误删除数据恢复
  5. 第八章、使用matplotlib绘制高级图表
  6. i春秋 upload
  7. 用Arduino自制一个小型蜘蛛机器人
  8. 格林尼治标准时(GMT)与世界时(UTC)
  9. Matter协议与Zigbee
  10. stm32L1151用cube配置ADC