亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python使用KNN算法手寫體識別

 更新時(shí)間:2018年02月01日 09:47:32   作者:一笑丶奈何  
這篇文章主要為大家詳細(xì)介紹了python使用KNN算法手寫體識別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了用KNN算法手寫體識別的具體代碼,供大家參考,具體內(nèi)容如下

#!/usr/bin/python 
#coding:utf-8 
 
import numpy as np 
import operator 
import matplotlib 
import matplotlib.pyplot as plt 
import os 
 
''''' 
KNN算法 
1. 計(jì)算已知類別數(shù)據(jù)集中的每個(gè)點(diǎn)依次執(zhí)行與當(dāng)前點(diǎn)的距離。 
2. 按照距離遞增排序。 
3. 選取與當(dāng)前點(diǎn)距離最小的k個(gè)點(diǎn) 
4. 確定前k個(gè)點(diǎn)所在類別的出現(xiàn)頻率 
5. 返回前k個(gè)點(diǎn)出現(xiàn)頻率最高的類別作為當(dāng)前點(diǎn)的預(yù)測分類 
''' 
 
''''' 
inX為要分類的向量 
dataSet為訓(xùn)練樣本 
labels為標(biāo)簽向量 
k為最近鄰的個(gè)數(shù) 
''' 
def classify0(inX , dataSet , labels , k): 
 dataSetSize = dataSet.shape[0]#dataSetSize為訓(xùn)練樣本的個(gè)數(shù) 
 diffMat = np.tile(inX , (dataSetSize , 1)) - dataSet#將inX擴(kuò)展為dataSetSize行,1列 
 sqDiffMat = diffMat**2 
 sqDistances = sqDiffMat.sum(axis=1) 
 distances = sqDistances**0.5 
 sortedDistIndicies = distances.argsort()#返回的是元素從小到大排序后,該元素原來的索引值的序列 
 classCount = {} 
 for i in range(k): 
  voteIlabel = labels[sortedDistIndicies[i]]#voteIlabel為類別 
  classCount[voteIlabel] = classCount.get(voteIlabel,0)+1#如果之前這個(gè)voteIlabel是有的,那么就返回字典里這個(gè)voteIlabel里的值,如果沒有就返回0 
 sortedClassCount = sorted(classCount.iteritems(),key=operator.itemgetter(1),reverse=True)#key=operator.itemgetter(1)的意思是按照字典里的第一個(gè)排序,{A:1,B:2},要按照第1個(gè)(AB是第0個(gè)),即‘1'‘2'排序。reverse=True是降序排序 
 print sortedClassCount 
 return sortedClassCount[0][0] 
 
 
''''' 
將圖像轉(zhuǎn)換為1*1024的向量 
''' 
def img2vector(filename): 
 returnVect = np.zeros((1,1024)) 
 fr = open(filename) 
 for i in range(32): 
  line = fr.readline() 
  for j in range(32): 
   returnVect[0,i*32+j] = int(line[j] ) 
 return returnVect 
 
''''' 
手寫體識別系統(tǒng)測試 
''' 
def handwritingClassTest(trainFilePath,testFilePath): 
 hwLabels = [] 
 trainingFileList = os.listdir(trainFilePath) 
 m=len(trainingFileList) 
 trainSet = np.zeros((m,1024)) 
 for i in range(m): 
  filename = trainingFileList[i] 
  classNum = filename.split('.')[0] 
  classNum = int(classNum.split('_')[0]) 
  hwLabels.append(classNum) 
  trainSet[i] = img2vector( os.path.join(trainFilePath,filename) ) 
 testFileList = os.listdir(testFilePath) 
 errorCount = 0 
 mTest = len(testFileList) 
 for i in range(mTest): 
  filename = trainingFileList[i] 
  classNum = filename.split('.')[0] 
  classNum = int(classNum.split('_')[0]) 
  vectorUnderTest = img2vector(os.path.join(trainFilePath, filename)) 
  classifyNum = classify0(vectorUnderTest,trainSet,hwLabels,10) 
  print "the classifier came back with : %d , the real answer is : %d"% (classifyNum , classNum) 
  if(classifyNum != classNum) : errorCount+=1 
 print ("\nthe total number of error is : %d"%errorCount) 
 print ("\nthe error rate is : %f"%(float(errorCount)/mTest)) 
handwritingClassTest()

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python判斷字符串以什么結(jié)尾的實(shí)例方法

    python判斷字符串以什么結(jié)尾的實(shí)例方法

    在本篇文章里小編給大家整理了關(guān)于python判斷字符串以什么結(jié)尾的實(shí)例方法 ,需要的朋友們可以學(xué)習(xí)參考下。
    2020-09-09
  • 使用Python操作MySQL的一些基本方法

    使用Python操作MySQL的一些基本方法

    這篇文章主要介紹了使用Python操作MySQL的一些基本方法,Python+MySQL也是服務(wù)器端快速開發(fā)的一種絕佳搭配方案,需要的朋友可以參考下
    2015-08-08
  • Python超有趣實(shí)例通過冒泡排序來實(shí)現(xiàn)LOL厄斐琉斯控槍

    Python超有趣實(shí)例通過冒泡排序來實(shí)現(xiàn)LOL厄斐琉斯控槍

    冒泡排序是一種簡單的排序算法,它也是一種穩(wěn)定排序算法。其實(shí)現(xiàn)原理是重復(fù)掃描待排序序列,并比較每一對相鄰的元素,當(dāng)該對元素順序不正確時(shí)進(jìn)行交換。一直重復(fù)這個(gè)過程,直到?jīng)]有任何兩個(gè)相鄰元素可以交換,就表明完成了排序
    2022-05-05
  • 基于Python輕松制作一個(gè)股票K線圖網(wǎng)站

    基于Python輕松制作一個(gè)股票K線圖網(wǎng)站

    在當(dāng)今這個(gè)人手一個(gè)?Web?服務(wù)的年代,GUI?程序還是沒有?Web?服務(wù)來的香啊。所以本文將用Python制作一個(gè)簡單的股票K線圖網(wǎng)站,感興趣的可以了解一下
    2022-09-09
  • 如何在Python中編寫并發(fā)程序

    如何在Python中編寫并發(fā)程序

    讓計(jì)算機(jī)程序并發(fā)的運(yùn)行是一個(gè)經(jīng)常被討論的話題,今天我想討論一下Python下的各種并發(fā)方式。
    2016-02-02
  • Python中搜索和替換文件中的文本的實(shí)現(xiàn)(四種)

    Python中搜索和替換文件中的文本的實(shí)現(xiàn)(四種)

    本文主要介紹了Python中搜索和替換文件中的文本的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-10-10
  • 用Python解決x的n次方問題

    用Python解決x的n次方問題

    今天小編就為大家分享一篇用Python解決x的n次方問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • pytorch  RNN參數(shù)詳解(最新)

    pytorch  RNN參數(shù)詳解(最新)

    這篇文章主要介紹了pytorch  RNN參數(shù)詳解,這個(gè)示例代碼展示了如何使用 PyTorch 定義和訓(xùn)練一個(gè) LSTM 模型,并詳細(xì)解釋了每個(gè)類和方法的參數(shù)及其作用,需要的朋友可以參考下
    2024-06-06
  • Python如何操作office實(shí)現(xiàn)自動(dòng)化及win32com.client的運(yùn)用

    Python如何操作office實(shí)現(xiàn)自動(dòng)化及win32com.client的運(yùn)用

    這篇文章主要介紹了Python如何操作office實(shí)現(xiàn)自動(dòng)化及win32com.client的運(yùn)用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • matplotlib 多個(gè)圖像共用一個(gè)colorbar的實(shí)現(xiàn)示例

    matplotlib 多個(gè)圖像共用一個(gè)colorbar的實(shí)現(xiàn)示例

    這篇文章主要介紹了matplotlib 多個(gè)圖像共用一個(gè)colorbar的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評論