机器学习实战(一)——kNN算法
来源:互联网 发布:京东优惠券软件 编辑:程序博客网 时间:2024/06/06 09:10
最近选修了计算机学院的模式识别课,其中讲到了Parzen窗和kNN算法这两种对于总体的非参数估计方法,之前在机器学习实战中用kNN算法进行了手写数字识别,今天继续用Parzen窗原理的PNN(概率神经网络)算法写出python程序比较一下优劣。
PNN算法将是我写的第一个需要训练的机器学习程序。
2016.3.15
———分割线,以下为之前内容,kNN算法—————————————————————
kNN.py
# -*- coding: utf-8 -*-############KNN: the k nearest neighbours###########from numpy import *import operatorimport os###############new_input : a matrix with [1,1024]#dataset : a matrix with [num,1024]#labels : 0:9# k : the k in knndef kNNClassify(new_input,dataset,labels,k):#cal the distance num = dataset.shape[0] subMatrix=tile(new_input,[num,1]) dist=subMatrix-dataset dist=dist**2 #distance=dist.sum(axis=1) distance=sum(dist,axis=1) disttance=distance**0.5#sort sortedDistIndice=argsort(distance)#cal the most voteCount={} for i in xrange(k): voteIndice=labels[sortedDistIndice[i]] #cal the votes voteCount[voteIndice]=voteCount.get(voteIndice,0)+1 #max votecount maxCount = 0 for key,value in voteCount.items(): if value > maxCount: maxCount = value maxIndex = key return maxIndexdef img2Vector(filename): rows = 32 cols = 32 imgVector = zeros([1,rows*cols]) fileIn = open(filename) for row in xrange(rows): lineStr = fileIn.readline() for col in xrange(cols): imgVector[0,row*cols+col] = int(lineStr[col]) return imgVectordef loadDataSet(): #getting training set print 'getting training set' rows = 32 cols = 32 dirTrain = './1/' fileTrain = os.listdir('./1/') train_x = zeros((len(fileTrain),rows*cols)) #labels = [] #zeros(1,len(filename)) train_y =[] for i in xrange(len(fileTrain)): dirFile=dirTrain+fileTrain[i] train_x[i,:] = img2Vector(dirFile) label = int(fileTrain[i].split('_')[0]) train_y.append(label) print 'getting test set' dirTest = './2/' fileTest = os.listdir('./2/') test_x=zeros((len(fileTest),rows*cols)) test_y=[] for j in xrange(len(fileTest)): dirFile=dirTest+fileTest[j] test_x[j,:]=img2Vector(dirFile) label = int(fileTest[j].split('_')[0]) test_y.append(label) return train_x,train_y,test_x,test_ydef testHandWriting(): print 'loading data' train_x,train_y,test_x,test_y =loadDataSet() print 'traning' pass print 'testing' numTestSamples = test_x.shape[0] matchCount = 0 for i in xrange(numTestSamples): predict = kNNClassify(test_x[i],train_x,train_y,3) if predict == test_y[i]: matchCount += 1 accuracy = float(matchCount)/numTestSamples print 'show the result...\n' print '%.2f%%' %(accuracy*100)
test_kNN.py
#test-kNNimport kNNkNN.testHandWriting()
0 0
- 机器学习实战(一)——kNN算法
- 《机器学习实战》(一)knn算法
- 机器学习实战——kNN算法
- 机器学习实战——kNN算法
- 机器学习实战—实施kNN算法
- 机器学习实战—笔记-kNN算法
- 《机器学习实战》学习(一)——k-近邻算法(kNN)
- 《机器学习实战》学习总结(一)——K近邻算法(KNN)
- 机器学习实战——k-近邻算法(KNN)
- 机器学习实战——KNN(K近邻算法)
- 《机器学习实战》读书笔记(一) kNN算法
- 机器学习实战ByMatlab(一)KNN算法
- 机器学习实战ByMatlab(一)KNN算法
- 机器学习实战学习笔记(一)分类—kNN算法(python3实现)
- 机器学习算法—K-近邻(一)(KNN)
- 《机器学习实战》学习笔记——kNN算法
- 机器学习实战学习笔记1——KNN算法
- kNN算法——菜鸟学习机器学习实战
- The First Bolg Text!
- MyEclipse项目左上角显示红色感叹号的解决方法
- JSP九大内置对象详解
- iOS 用宏在category里给对象添加属性
- Mac_苹果电脑设置眼睛保护色
- 机器学习实战(一)——kNN算法
- 深度学习与计算机视觉(11)_基于deep learning的快速图像检索系统
- JAVA测试题
- git commit ammend 修改已经提交的注释
- 关闭百度推荐搜索工具条的方法。。
- C++静态
- java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind 【 解决方案】
- http post get请求
- 算法导论编程第2章 插入排序