kNN算法及实例(二)
来源:互联网 发布:汉朝为什么灭亡 知乎 编辑:程序博客网 时间:2024/05/17 15:19
上一篇博客介绍了kNN算法,以及如何在一维数据中使用分类http://blog.csdn.net/congqi4525/article/details/71374484。
本篇博客将详细介绍如何对二维数据进行分类(以机器学习实战中的手写识别系统为例)
算法数据包括两部分:trainingDigits和testDigits
为了使用上一篇博客中的分类算法,需要将图片的二维数据转换成一维数据
算法代码如下:
from numpy import *from kNN import classify0import osdef img2vector(filename): #将二维图像数据转换成一维向量的形式 retVec=zeros((1,1024)) fr=open(filename) for i in range(32): lineStr=fr.readline() for j in range(32): retVec[0,32*i+j]=int(lineStr[j]) return retVecdef handclassTest(): hwLabels=[] trainFileList=os.listdir('data/trainingDigits') m=len(trainFileList) trainingMat=zeros((m,1024)) for i in range(m): #将训练数据读入矩阵中 fileNameStr=trainFileList[i] fileStr=fileNameStr.split('.')[0] classNumStr=int(fileStr.split('_')[0]) hwLabels.append(classNumStr) trainingMat[i,:]=img2vector("data/trainingDigits/%s"%fileNameStr) testFileList=os.listdir('data/testDigits') mTest=len(testFileList) errorCount=0.0 for i in range(mTest): #对测试集中的数据循环使用分类,最终得到类别 fileNameStr=testFileList[i] fileStr=fileNameStr.split('.')[0] classNumStr=int(fileStr.split('_')[0]) vectorUnderTest=img2vector("data/testDigits/%s"%fileNameStr) classresult=classify0(vectorUnderTest,trainingMat,hwLabels,3) print("came back:%d real:%d"%(classresult,classNumStr)) if(classresult!=classNumStr): errorCount+=1.0 print("errorCount:%d %f"%(errorCount,errorCount/float(mTest)))handclassTest()
1 0
- kNN算法及实例(二)
- kNN算法及实例(一)
- KNN算法实例
- 机器学习中的kNN算法及Matlab实例
- k最邻近算法-KNN,及python3 实例代码
- 机器学习中的kNN算法及Matlab实例
- knn算法实例(python)
- KNN算法学习笔记二
- KNN分类算法及改进
- KNN算法及python实现
- KNN算法拓展及实现
- KNN算法及python问题
- KNN临近算法的原理及实例(iris分类)代码实现
- KNN算法图解(MATLAB实例)
- 机器学习-KNN分类算法Iris实例
- kNN算法_手写识别实例
- KNN算法实例---手写数字识别
- 机器学习(4)——KNN算法及手写数字的识别(二)
- Linux 命令学习
- Java实现切图功能
- 寻湖北荆州刘氏族谱
- 北京注册的公司如何缴纳公积金
- java基础提高篇--java的三大特性--继承
- kNN算法及实例(二)
- sas proc sql 基础入门 (原创作品,转载请注明出处 )
- Servlet需要注意的细节(重要)
- QT中的数据类型--转自<QtGlobal>
- 设计模式之工厂模式
- MySQL之alter语句用法总结
- 做好这五点轻松优化长尾关键词
- java源码中assert的基本用法
- jQuery