python 機器學習knn識別數字1

2021-09-19 17:31:57 字數 1625 閱讀 8303

train-images-idx3-ubyte.gz: training set images (9912422 bytes)

train-labels-idx1-ubyte.gz: training set labels (28881 bytes)

t10k-images-idx3-ubyte.gz: test set images (1648877 bytes)

t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes)

目錄如圖

2、此資料集中,

訓練樣本:共60000個,其中55000個用於訓練,另外5000個用於驗證

測試樣本:共10000個

3、資料集中畫素值

a)使用python讀取二進位制檔案方法讀取mnist資料集,則讀進來的影象畫素值為0-255之間;標籤是0-9的數值。

b)採用tensorflow的封裝的函式讀取mnist,則讀進來的影象畫素值為0-1之間;標籤是0-1值組成的大小為1*10的行向量。

mnist=input_data.

read_data_sets

('mnist'

,one_hot=true)#讀取資料

2.我們要解析mnist的資料情況

import  numpy as np

import cv2

from tensorflow.examples.tutorials.mnist import input_data

mnist=input_data.

read_data_sets

('minst'

,one_hot=true)

print

(mnist.train.images[1]

)#輸出的是第二張的一維陣列,因為它的資料是28

*28大小的,然後它把

#二維的畫素點陣列通過變化變成一維是陣列.

aa=mnist.train.images[1]

bb=np.

reshape

(aa,(28

,28))#然後通過reshape將一維陣列變成28

*28的二維陣列

print

(bb)

cc=cv2.

resize

(bb,

(128

,128

))#變化尺寸,因為28

*28太小了看不清,所以放大成128

*128,這裡只是為了顯示

#訓練資料還是得按照它的大小28

*28來

cv2.

imshow

("img1"

,cc*

255)#之所以乘255是因為它的資料都是歸一化的,就是它的畫素陣列裡的值都是除過

#255的,所以我們要想檢視這張圖就得乘回255。

如圖

輸出結果如下:

機器學習實戰 knn 手寫識別

這個是 機器學習實戰 的第二個例項,用knn演算法實現手寫識別,識別0 9這幾個數字 要實現手寫識別功能,首先將影象資料轉換為矩陣或者向量形式,本例使用32 32的二值影象,轉化成1 1024的陣列,具體 如下 def img2vector filename returnvect zeros 1,1...

機器學習 KNN演算法 手寫識別

1.1 簡介 knn演算法即k最近鄰分類演算法,是機器學習的一種。從訓練樣本集中選取k個與測試樣本 距離 最近的樣本,這k個樣本中出現頻率最高的類別作為該測試樣本的類別。1.2 要求 目標 分類未知類別的案例。輸入 待分類未知類別案例專案 測試集 已知類別案例集合d 訓練集 輸出 未知類別案例的可能...

機器學習(二) kNN手寫數字識別

一 knn演算法 1 knn演算法是機器學習的入門演算法,其中不涉及訓練,主要思想是計算待測點和參照點的距離,選取距離較近的參照點的類別作為待測點的的類別。2,距離可以是歐式距離,夾角余弦距離等等。3,k值不能選擇太大或太小,k值含義,是最後選取距離最近的前k個參照點的類標,統計次數最多的記為待測點...