機器學習-實戰-入門-MNIST手寫數字識別
#將mnist資料集轉換成CSV格式 import struct def to_csv(name,maxdata): lbl_f = open("./data/"+name+"-labels.idx1-ubyte","rb") #開啟標籤資料集 img_f = open("./data/"+name+"-images.idx3-ubyte","rb") #開啟影象資料集 csv_f = open("./data/"+name+",csv","w",encoding="utf-8") #寫入CSV檔案 mag,lbl_count=struct.unpack(">II",lbl_f.read(8)) #將位元組流轉換成python資料型別複製給標籤 mag,img_count=struct.unpack(">II",img_f.read(8)) #將位元組流轉換成python資料型別複製給影象 rows,cols=struct.unpack(">II",img_f.read(8)) #將位元組流轉換成python資料型別複製給行列 pixels=rows*cols #計算資料總量 res=[] for idx in range(lbl_count): if idx > maxdata:break #設定計數器,大於資料個數總量時跳出迴圈 label=struct.unpack("B",lbl_f.read(1))[0] bdata=img_f.read(pixels) sdata=list(map(lambda n:str(n),bdata)) csv_f.write(str(label)+",") #寫入標籤 csv_f.write(",".join(sdata)+"\r\n") #寫入資料(數字) if idx < 10: s="P2 28 28 255\n" s+=" ".join(sdata) iname="./data/{0}-{1}-{2}.pgm".format(name,idx,label) with open(iname,"w",encoding="utf-8") as f: f.write(s) csv_f.close() #關閉CSV流 lbl_f.close() #關閉標籤流 img_f.close() #關閉影象流 to_csv("train",1000) #轉換到train.csv 1000個數據 to_csv("t10k",1000) #轉換到t10k.csv 1000個數據
二.用sklearn的交叉驗證處理資料,SVM訓練資料預測結果,metrics生成分類報告和準確率
#用sklearn中的SVM來訓練模型,預測資料集 from sklearn import cross_validation,svm,metrics def load_csv(fname): labels=[] images=[] with open(fname,"r") as f: for line in f: cols=line.split(",") if len(cols)<2:continue labels.append(int(cols.pop(0))) vals=list(map(lambda n: int(n) / 256,cols)) images.append(vals) return {"labels":labels,"images":images} data=load_csv("./data/train.csv") test=load_csv("./data/t10k.csv") clf=svm.SVC() clf.fit(data["images"],data["labels"]) #訓練資料集 predict=clf.predict(test["images"]) #預測測試集 score=metrics.accuracy_score(test["labels"],predict) #生成測試精度 report=metrics.classification_report(test["labels"],predict) #生成交叉驗證的報告 print(score) #顯示資料精度 print(report) #顯示交叉驗證資料集報告
執行結果
三組平均測試精度為0.772 參考文獻: 《統計學習方法》 《Web scraping and machine learning by python》
相關推薦
機器學習-實戰-入門-MNIST手寫數字識別
作者:橘子派 宣告:版權所有,轉載請註明出處,謝謝。 實驗環境: Windows10 Sublime Anaconda 1.6.0 Python3.6 程式碼功能包括: 一.ubyte資料集轉
機器學習實戰——KNN演算法手寫數字識別
資料來源 我們的文字是形如這樣的,每個數字都有很多txt檔案,TXT裡面是01數字,表示手寫數字的灰度圖。 現在我們要用knn演算法實現數字識別。 資料處理 每個txt檔案都是32*32的0,1矩陣,如果要使用knn,那麼還得考慮行列關係,如果能把它拉開,只有一行,就可以不必考慮數字
機器學習實戰例項之手寫數字識別(KNN、python3)
from numpy import * from os import listdir import operator def img2Vector(filename): returnVecter = zeros((1,1024)) fr = open(fil
機器學習實戰:knn手寫數字
資料及程式碼github。 """ @author: lishihang @software: PyCharm @file: handwritten.py @time: 2018/11/26 16:18 """ import numpy as np import m
tensorflow 基礎學習五:MNIST手寫數字識別
truncate averages val flow one die correct 表示 data MNIST數據集介紹: from tensorflow.examples.tutorials.mnist import input_data # 載入MNIST數據集,
tensorflow實戰:MNIST手寫數字識別的優化2-代價函式優化,準確率98%
最簡單的tensorflow的手寫識別模型,這一節我們將會介紹其簡單的優化模型。我們會從代價函式,多層感知器,防止過擬合,以及優化器的等幾個方面來介紹優化過程。 1.代價函式的優化: 我們可以這樣將代價函式理解為真實值與預測值的差距,我們神經
100天搞定機器學習|day39 Tensorflow Keras手寫數字識別
提示:建議先看day36-38的內容 TensorFlow™ 是一個採用資料流圖(data flow graphs),用於數值計算的開源軟體庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯絡的多維資料陣列,即張量(tensor)。它靈活的架構讓你可以在多種平臺上展開計算,
OpenCV機器學習:SVM分類器實現MNIST手寫數字識別
0. 開發環境 最近機器學習隨著AI人工智慧的興起越來越火,博主想找一些ML的庫來練手。突然想起之前在看Opencv的doc時發現有ML的component,於是心血來潮就開始寫程式碼試試。話不多說,直接進正題。 以下我的開發環境配置: -Windows7
TensorFlow實現機器學習的“Hello World”--Mnist手寫數字識別
TensorFlow實現機器學習的“Hello World” 上一篇部落格我們已經說了TensorFlow大概怎麼使用,這次來說說機器學習中特別經典的案例,也相當於是機器學習的“Hello World”,他就是Mnist手寫數字識別,也就是通過訓練機器讓他能看
深度學習之mnist手寫數字識別入門
使用tensorflow框架和python,學習實現簡單的神經網路,並進行調參,程式碼如下: #! /usr/bin/python # -*- coding:utf-8 -*- """ a simple mnist classifier """ from __fut
深度學習入門——利用卷積神經網路實現MNIST手寫數字識別
MNIST(Modified National Institute of Standards and Technology)資料庫是一個大型手寫數字資料庫,通常用於訓練各種影象處理系統。該資料庫還廣泛用於機器學習領域的培訓和測試。它是通過重新打亂來自NIST原始資料集的樣本而
mnist手寫數字識別——深度學習入門專案(tensorflow+keras+Sequential模型)
前言 今天記錄一下深度學習的另外一個入門專案——《mnist資料集手寫數字識別》,這是一個入門必備的學習案例,主要使用了tensorflow下的keras網路結構的Sequential模型,常用層的Dense全連線層、Activation啟用層和Reshape層。還有其他方法訓練手寫數
基於Keras mnist手寫數字識別---Keras卷積神經網路入門教程
目錄 1、一些說明 2、常量定義 3、工具函式 4、模型定義以及訓練 4.1、匯入庫 4.2、主入口 4.3、主函式 4.3.1、獲取訓練資料 4.3.1、定義模型 4.3.2
【AI實戰】訓練第一個AI模型:MNIST手寫數字識別模型
在上篇文章中,我們已經把AI的基礎環境搭建好了(見文章:Ubuntu + conda + tensorflow + GPU + pycharm搭建AI基礎環境),接下來將基於tensorflow訓練第一個AI模型:MNIST手寫數字識別模型。 MNIST是一個經典的手寫數字資料集,來自美國國家
tensorflow實戰入門題目--手寫數字的識別
tensorflow實戰入門題目–手寫數字的識別 這是我的第一篇部落格,有很多寫不好的地方,還請大家多多批評指正。 手寫體的示範: 匯入資料,由於mnist手寫數字在 from tensorflow.examples.tutorials.mnist import i
TensorFlow——Mnist手寫數字識別並可視化 實戰教程(一)
要點: 該教程為深度學習tensorflow框架mnist手寫數字識別。 實戰教程分為(一)(二)(三)分別從tensorflow和MATLAB雙角度來實現。 筆者資訊:Next_Legend Q
基於tensorflow的MNIST手寫數字識別(二)--入門篇
一、本文的意義 因為谷歌官方其實已經寫了MNIST入門和深入兩篇教程了,那我寫這些文章又是為什麼呢,只是抄襲?那倒並不是,更準確的說應該是筆記吧,然後用更通俗的語言來解釋,並且補充
PyTorch基礎入門六:PyTorch搭建卷積神經網路實現MNIST手寫數字識別
1)卷積神經網路(CNN)簡介 關於什麼是卷積神經網路(CNN),請自行查閱資料進行學習。如果是初學者,這裡推薦一下臺灣的李巨集毅的深度學習課程。連結就不給了,這些資料網站上隨處可見。 值得一提的是,CNN雖然在影象處理的領域具有不可阻擋的勢頭,但是它絕對不僅僅只能用來影
Tensorflow深度學習之七:再談mnist手寫數字識別程式
之前學習的第一個深度學習的程式就是mnist手寫字型的識別,那個時候對於很多概念不是很理解,現在回過頭再看當時的程式碼,理解了很多,現將加了註釋的程式碼貼上,與大家分享。(本人還是在學習Tensorflow的初始階段,如果有什麼地方理解有誤,還請大家不吝指出。)
Pytorch 快速入門(六)MNIST 手寫數字識別之CNN
接觸過深度學習的朋友對MNIST資料集肯定不陌生。基本上算是玩神經網路裡的“hello,world!”本節基於MNIST資料集,實現CNN學習過程。下面是一個 CNN 最後一層的學習過程, 我們先視覺化看看:MNIST手寫資料 首先是資料集下載,為了看看資料集裡究竟是長什麼樣