2.3示例:手寫識別系統
2.3.1準備資料:將影象轉換為測試向量
def img2vector(filename):
returnvect = np.zeros((1,1024))
fr = open(filename)
for i in range(32):
linestr = fr.readline()
for j in range(32):
returnvect[0,32*i+j] = int(linestr[j])
return returnvect
在python命令列中輸入下列命令測試img2vector函式
在測試函式時容易出現如下圖中的錯誤
檔案在多級目錄下,檔名由數字組成,程式不可執行,此時應記得對檔名進行轉義
參考文章:
2.3.2 測試演算法:使用k-近鄰演算法識別手寫數字
將以下手寫數字識別系統的測試**寫入knn.py檔案之前,必須將from os import listdir 寫入檔案的起始部分,該函式可以列出給定目錄的檔名
def handwritingclasstest():
hwlabels =
trainingfilelist = listdir('f:\\machinelearninginaction\\ch02\\trainingdigits') #load the training set
m = len(trainingfilelist)
trainingmat = np.zeros((m,1024))
for i in range(m):
filenamestr = trainingfilelist[i]
filestr = filenamestr.split('.')[0] #take off .txt
classnumstr = int(filestr.split('_')[0])
trainingmat[i,:] = img2vector('f:\\machinelearninginaction\\ch02\\trainingdigits\\%s' % filenamestr)
testfilelist = listdir('f:\\machinelearninginaction\\ch02\\testdigits') #iterate through the test set
errorcount = 0.0
mtest = len(testfilelist)
for i in range(mtest):
filenamestr = testfilelist[i]
filestr = filenamestr.split('.')[0] #take off .txt
classnumstr = int(filestr.split('_')[0])
vectorundertest = img2vector('f:\\machinelearninginaction\\ch02\\testdigits\\%s' % filenamestr)
classifierresult = classify0(vectorundertest, trainingmat, hwlabels, 3)
print "the classifier came back with: %d, the real answer is: %d" % (classifierresult, classnumstr)
if (classifierresult != classnumstr): errorcount += 1.0
print "\nthe total number of errors is: %d" % errorcount
print "\nthe total error rate is: %f" % (errorcount/float(mtest))
此時同樣要注意對檔名進行轉義
在python命令提示符中輸入knn.handwritingclasstest(),測試該函式輸出結果。輸出結果如下圖所示:
《機器學習實戰》學習筆記
很久沒寫過部落格了,一重開就給自己挖了這麼乙個大坑 最近一段時間看了 機器學習實戰 這本書,感覺寫得不錯,認真看了看。關於這本書的書評及購買事宜請移步豆瓣 京東 亞馬遜等 這裡不多說。不過有一點,感覺這本書有個很好的地方是給出了各個演算法的python實現 和講解,要求不高的話可以拿來用了 懶 在這...
《機器學習實戰》學習筆記
目錄 第2章 k 近鄰演算法 第3章 決策樹 第4章 基於概率論的分類方法 樸素貝葉斯 第5章 logistic回歸 第7章 利用adaboost元演算法提高分類效能 第8章 數值型資料 回歸 1.python console匯入knn.py檔案 import knn1.reload的使用方法 fr...
《機器學習實戰》學習筆記
通過對輸入資料inx和資料集dataset座標距離的計算返回結果 資料集包括group 座標 和labels 分類 計算inx與group點與點的距離 對距離遞增排序 選取排序後的前k個值對應的label 根據label出現的頻率對inx進行分類 def classify0 inx,dataset,...