importnumpy as np
#bmp 字尾
import
matplotlib.pyplot as plt
%matplotlib inline
from sklearn.neighbors import kneighborsclassifier
提煉樣本資料
img_arr = plt.imread('./data/3/3_100.bmp')
plt.imshow(img_arr)
讀出所有的資料
feature =target =
for i in range(0,10):
for j in range(1,501):
img_path = '
./data/
'+str(i)+'
/'+str(i)+'
_'+str(j+1)+'
.bmp
'img_arr =plt.imread(img_path)
樣本資料的提取
feature =np.array(featrue)target = np.array(target)
feature.shapetarget.shape
#feature是乙個三維陣列(執行將維操作)
feature = feature.reshape(5000,28*28)
feature.shape
將樣本資料打亂
np.random.seed(3)np.random.shuffle(feature)
np.random.seed(3)
np.random.shuffle(target)
獲取訓練資料和測試資料
x_train = feature[:4950]y_train = target[:4950]
x_test = feature[-50:]
y_test = target[-50:]
例項化模型物件,訓練
knn = kneighborsclassifier(n_neighbors=30)knn.fit(x_train,y_train)
knn.score(x_train,y_train)
print('**分類:
',knn.predict(x_test))
print('
真實資料:
',y_test)
模型的儲存
from sklearn.externals importjoblib
joblib.dump(knn,
"./knn.m
"
讀取模型
knn = joblib.load("./knn.m
")
讓模型進行外部的識別
img_arr = plt.imread('./數字.jpg')
plt.imshow(img_arr)
利用切片取值
five_arr = img_arr[95:150,85:1305]plt.imshow(new_arr)
#five陣列是三維的,需要進行降維,捨棄第三個表示顏色的維度
five_arr = five_arr.mean(axis=2)
five_arr.shape
importscipy.ndimage as ndimage
five = ndimage.zoom(five_arr,zoom = (28/65,28/55))
knn.predict(five.reshape(1,784))
資料分析實戰 KNN手寫數字識別
1.演算法背景 2.sklearn介面api 3.手寫數字識別實戰 演算法背景 knn k nearest neighbor 演算法核心為 近朱者赤,近墨者黑 工作原理 1.計算待分類樣本與訓練樣本的距離 2.對距離公升序排序,選取距離待分類樣本最近的k個鄰居 3.分類 統計k個鄰居所屬的類別,並將...
KNN手寫數字識別
以歐幾里得距離度量樣本間的相似程度。對於乙個測試樣本首先計算該樣本與每個訓練樣本間的距離,然後按距離值對訓練樣本進行公升序排序,排序後前k個樣本進行投票,即哪個標籤出現的次數多,就將測試樣例劃為該類。程式使用資料 預先將資料處理為,標籤資訊轉化為txt文件。from numpy import imp...
kNN 手寫數字識別
識別手寫的數字0 9,影象為32畫素 32畫素的黑白影象 1.將影象轉換為向量 將32 32的二進位制影象矩陣轉換為1 1024的向量。將影象轉化為向量 defimgvector filename returnvect zeros 1,1024 fr open filename 讀取檔案的前32行 ...