聚类(K-means)实现手写数字识别
其他实现手写数字识别的方法:
1.KNN实现手写数字识别
2. 卷积神经网络(CNN)实现手写数字识别
3. 全连接神经网络实现手写数字识别
4. 聚类(K-means)实现手写数字识别-2
实验数据是老师收集了所有人的手写数字图片,且经过处理将图像生成了.txt文件,如何生成点击这,如下图
代码实现
代码修改自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))
- 还有一个K-means实现手写数字识别的代码,我过段时间再分享
聚类(K-means)实现手写数字识别相关推荐
- 第7-3课:K 最邻近算法(KNN)与手写数字识别
K 最近邻(KNN,K-Nearest Neighbor)算法是一类在数据挖掘领域常用的分类算法,该算法看似神秘,其实原理很简单,算法实现也很简单.KNN 算法在类别决策时,只参考极少量的相邻样本,也 ...
- k近邻算法_图穷匕见:K近邻算法与手写数字识别
机器学习算法是从数据中产生模型,也就是进行学习的算法.我们把经验提供给算法,它就能够根据经验数据产生模型.在面对新的情况时,模型就会为我们提供判断(预测)结果.例如,我们根据"个子高.腿长. ...
- 模式识别和机器学习实战-K近邻算法(KNN)- Python实现 - 约会网站配对效果判断和手写数字识别
文章目录 前言 一. k-近邻算法(KNN) 1.算法介绍 2.举个例子--电影分类 3.步骤描述 4.来了--代码实现 二.实战之约会网站配对效果判断 1.导入数据 2.分析数据 3.数据归一化 4 ...
- 2 机器学习 K近邻算法(KNN) 学习曲线 交叉验证 手写数字识别
机器学习 1 K-近邻算法介绍 1.1 分类问题 分类问题:根据已知样本的某些特征,判断一个未知样本属于哪种样本类别. 与回归问题相比,分类问题的输出结果是离散值,用于指定输入的样本数据属于哪个类别. ...
- 手把手入门神经网络系列(2)_74行代码实现手写数字识别
作者: 龙心尘&&寒小阳 时间:2015年12月. 出处: http://blog.csdn.net/longxinchen_ml/article/details/5028124 ...
- [Kaggle] Digit Recognizer 手写数字识别(卷积神经网络)
文章目录 1. 使用 LeNet 预测 1.1 导入包 1.2 建立 LeNet 模型 1.3 读入数据 1.4 定义模型 1.5 训练 1.6 绘制训练曲线 1.7 预测提交 2. 使用 VGG16 ...
- Python(TensorFlow框架)实现手写数字识别系统
手写数字识别算法的设计与实现 本文使用python基于TensorFlow设计手写数字识别算法,并编程实现GUI界面,构建手写数字识别系统.这是本人的本科毕业论文课题,当然,这个也是机器学习的基本问题 ...
- Python TensorFlow框架 实现手写数字识别系统
手写数字识别算法的设计与实现 本文使用python基于TensorFlow设计手写数字识别算法,并编程实现GUI界面,构建手写数字识别系统.这是本人的本科毕业论文课题,当然,这个也是机器学习的基本问题 ...
- 机器学习笔记——从手写数字识别开始
文章目录 前言 关于这篇博客(预计八月下旬全部完成) 关于项目实现 监督学习 ANN全连接神经网络的实现 1.总述 2.初始化 3.传播及损失 4.反向传播 决策树以及随机森林的实现 1.总述 2.单 ...
最新文章
- linux中DNS的介绍及DNS的高速缓存
- c# Application.DoEvents
- 数学--数论--莫比乌斯函数
- Flex读取XML不刷新问题
- python截图直接在内存里调用_Python-按块上传FTP中的内存文件(由API调用生...
- 线性代数在计算机视觉的应用,10种线性代数在数据科学中的强大应用(内附多种资源)...
- php PHP命令行脚本接收传入参数的三种方式
- 弹性力学方程 有限差分法matlab,泊松方程的有限差分法的MATLAB实现
- (新)OpenCV配置visual studio2019详细教程
- 使用phpquery采集小说
- 安装最好用的计算机软件,装机软件哪个好?教您最好的装机软件推荐
- 程序员的自我修养(收藏)
- 伽罗华有限域_有限域 伽罗瓦域
- 2019年 电赛C题 全国大学生电子设计竞赛试题解析与总结
- ARP报文目的MAC为什么不是广播地址?
- HBuilder快捷键整理集合
- 软件工程小项目~企业员工信息管理系统-需求分析~~
- 止咳绝招 献给身边咳嗽的人
- noip2016普及组初赛中山市成绩表及分数线
- RedHat 5 环境下 DHCP配置详解。