最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

機(jī)器學(xué)習(xí)python實(shí)戰(zhàn)之手寫數(shù)字識(shí)別

 更新時(shí)間:2017年11月01日 10:51:50   作者:嗜血的草  
這篇文章主要為大家詳細(xì)介紹了機(jī)器學(xué)習(xí)python實(shí)戰(zhàn)之手寫數(shù)字識(shí)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

看了上一篇內(nèi)容之后,相信對(duì)K近鄰算法有了一個(gè)清晰的認(rèn)識(shí),今天的內(nèi)容——手寫數(shù)字識(shí)別是對(duì)上一篇內(nèi)容的延續(xù),這里也是為了自己能更熟練的掌握k-NN算法。

我們有大約2000個(gè)訓(xùn)練樣本和1000個(gè)左右測(cè)試樣本,訓(xùn)練樣本所在的文件夾是trainingDigits,測(cè)試樣本所在的文件夾是testDigits。文本文件中是0~9的數(shù)字,但是是用二值圖表示出來的,如圖。我們要做的就是使用訓(xùn)練樣本訓(xùn)練模型,并用測(cè)試樣本來檢測(cè)模型的性能。

首先,我們需要將文本文件中的內(nèi)容轉(zhuǎn)化為向量,因?yàn)閳D片大小是32*32,所以我們可以將其轉(zhuǎn)化為1*1024的向量。具體代碼實(shí)現(xiàn)如下:

def img2vector(filename):
  imgVec = zeros((1,1024))
  file = open(filename)
  for i in range(32):
    lines = file.readline()
    for j in range(32):
      imgVec[0,32*i+j] = lines[j]
  return imgVec

實(shí)現(xiàn)了圖片到向量的轉(zhuǎn)化之后,我們就可以對(duì)測(cè)試文件中的內(nèi)容進(jìn)行識(shí)別了。這里的識(shí)別我們可以使用上一篇中的自定義函數(shù)classify0,這個(gè)函數(shù)的第一個(gè)參數(shù)是測(cè)試向量,第二個(gè)參數(shù)是訓(xùn)練數(shù)據(jù)集,第三個(gè)參數(shù)是訓(xùn)練集的標(biāo)簽。所以,我們首先需要將訓(xùn)練數(shù)據(jù)集轉(zhuǎn)化為(1934*1024)的矩陣,1934這里是訓(xùn)練集的組數(shù)即trainingDigits目錄下的文件數(shù),其對(duì)應(yīng)的標(biāo)簽轉(zhuǎn)化為(1*1934)的向量。之后要編寫的代碼就是對(duì)測(cè)試數(shù)據(jù)集中的每個(gè)文本文件進(jìn)行識(shí)別,也就是需要將每個(gè)文件都轉(zhuǎn)化成一個(gè)(1*1024)的向量,再傳入classify0函數(shù)的第一個(gè)形參。整體代碼如下:

def handWriteNumClassTest():
  NumLabels = []
  TrainingDirfile = listdir(r'D:\ipython\num_recognize\trainingDigits')#文件目錄
  L = len(TrainingDirfile)  #該目錄中有多少文件
  TrainMat = zeros((L,1024))
  for i in range(L):
    file_n = TrainingDirfile[i]
    fileName = file_n.split('.')[0]
    ClassName = int(file_n.split('_')[0])
    NumLabels.append(ClassName)
    TrainMat[i,:] = img2vector(r'D:\ipython\num_recognize\trainingDigits\%s'%file_n)
  TestfileDir = listdir(r'D:\ipython\num_recognize\testDigits')
  error_cnt = 0.0
  M = len(TestfileDir)
  for j in range(M):
    Testfile = TestfileDir[j]
    TestfileName = Testfile.split('.')[0]
    TestClassName = int(Testfile.split('_')[0])
    TestVector = img2vector(r'D:\ipython\num_recognize\testDigits\%s'%Testfile)
    result = classify0(TestVector,TrainMat,NumLabels,3)
    print('the result is %d,the real answer is %d\n'%(result,TestClassName))
    if result!=TestClassName:
      error_cnt+=1
  print('the total num of errors is %f\n'%error_cnt)
  print('the error rate is %f\n'%(error_cnt/float(M)))

這里需要首先導(dǎo)入listdir方法,from os import listdir,它可以列出給定目錄的文件名。對(duì)于測(cè)試的每個(gè)文件,如果識(shí)別的分類結(jié)果跟真實(shí)結(jié)果不一樣,則錯(cuò)誤數(shù)+1,最終用錯(cuò)誤數(shù)/測(cè)試總數(shù) 來表示該模型的性能。下面給出結(jié)果

這里測(cè)試的總共946個(gè)項(xiàng)目中,一共有10個(gè)出現(xiàn)了錯(cuò)誤,出錯(cuò)率為1%,這個(gè)性能還是可以接受的。有了上一篇內(nèi)容的理解,這篇就簡(jiǎn)單多了吧!

訓(xùn)練數(shù)據(jù)集和測(cè)試集文件下載

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

相關(guān)文章

  • python2.7 安裝pip的方法步驟(管用)

    python2.7 安裝pip的方法步驟(管用)

    這篇文章主要介紹了python2.7 安裝pip的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python中pytest命令行實(shí)現(xiàn)環(huán)境切換

    Python中pytest命令行實(shí)現(xiàn)環(huán)境切換

    在自動(dòng)化測(cè)試過程中經(jīng)常需要在不同的環(huán)境下進(jìn)行測(cè)試驗(yàn)證,所以寫自動(dòng)化測(cè)試代碼時(shí)需要考慮不同環(huán)境切換的情況,本文主要介紹了Python中pytest命令行實(shí)現(xiàn)環(huán)境切換,感興趣的可以了解一下
    2023-07-07
  • 詳解python如何根據(jù)參數(shù)不同調(diào)用不同的類和方法

    詳解python如何根據(jù)參數(shù)不同調(diào)用不同的類和方法

    這篇文章主要為大家詳細(xì)介紹了在python中如何根據(jù)參數(shù)不同調(diào)用不同的類和方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • djang常用查詢SQL語(yǔ)句的使用代碼

    djang常用查詢SQL語(yǔ)句的使用代碼

    這篇文章主要介紹了djang常用查詢SQL語(yǔ)句的使用代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Python中的Cookie模塊如何使用

    Python中的Cookie模塊如何使用

    在本篇文章中小編給大家整理的是一篇關(guān)于Python中的Cookie模塊用法的相關(guān)知識(shí)點(diǎn)文章,需要的朋友們可以參考下。
    2020-06-06
  • PyTorch 中的傅里葉卷積實(shí)現(xiàn)示例

    PyTorch 中的傅里葉卷積實(shí)現(xiàn)示例

    這篇文章主要介紹了PyTorch 中的傅里葉卷積實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 一文詳解NumPy數(shù)組迭代與合并

    一文詳解NumPy數(shù)組迭代與合并

    NumPy?數(shù)組迭代是訪問和處理數(shù)組元素的重要方法,它允許您逐個(gè)或成組地遍歷數(shù)組元素,NumPy?提供了多種函數(shù)來合并數(shù)組,用于將多個(gè)數(shù)組的內(nèi)容連接成一個(gè)新數(shù)組,本文給大家詳細(xì)介紹了NumPy數(shù)組迭代與合并,需要的朋友可以參考下
    2024-05-05
  • Python實(shí)現(xiàn)將PowerPoint轉(zhuǎn)為HTML格式

    Python實(shí)現(xiàn)將PowerPoint轉(zhuǎn)為HTML格式

    有時(shí)我們需要將精心設(shè)計(jì)的PPT發(fā)布到網(wǎng)絡(luò)上以便于更廣泛的訪問和分享,本文將介紹如何使用Python將PowerPoint轉(zhuǎn)換為HTML格式,需要的可以參考下
    2024-04-04
  • python 爬蟲百度地圖的信息界面的實(shí)現(xiàn)方法

    python 爬蟲百度地圖的信息界面的實(shí)現(xiàn)方法

    這篇文章主要介紹了python 爬蟲百度地圖的界面的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-10-10
  • Python可視化單詞統(tǒng)計(jì)詞頻統(tǒng)計(jì)中文分詞的實(shí)現(xiàn)步驟

    Python可視化單詞統(tǒng)計(jì)詞頻統(tǒng)計(jì)中文分詞的實(shí)現(xiàn)步驟

    這篇文章主要介紹了Python可視化單詞統(tǒng)計(jì)詞頻統(tǒng)計(jì)中文分詞,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-11-11

最新評(píng)論

龙门县| 陆川县| 宜阳县| 桂林市| 临湘市| 海伦市| 桦川县| 扎赉特旗| 繁昌县| 遂溪县| 许昌市| 茶陵县| 衢州市| 通榆县| 全南县| 溧阳市| 石河子市| 碌曲县| 通江县| 新余市| 万荣县| 平乐县| 喀喇| 阳春市| 兴化市| 荣昌县| 阳新县| 南涧| 共和县| 宁陵县| 赣州市| 云安县| 庐江县| 张家界市| 安丘市| 子洲县| 江阴市| 华容县| 康乐县| 通化市| 桐乡市|