A. 新手學習python中KNN演算法的手寫識別出現問題 求助
參考了其他博主的代碼 想試著運行 然後去理解。結果一直報錯,希望大神幫幫忙。
import numpy as np
import os
import kNN
def img2vector(filename):
"""函數將以文本格式出現的32*32的0-1圖片,轉變成一維特徵數組,返回一維數組
Keyword argument:
filename -- 文本格式的圖片文件
"""
imgvect = np.zeros((1, 1024))
fr = open(filename)
for i in range(32):
linestr = fr.readline()
for j in range(32):
imgvect[0, 32*i + j] = int(linestr[j])
return imgvect
def handwriteClassfiy(testfile, trainfile, k):
"""函數將trainfile中的文本圖片轉換成樣本特徵集和樣本類型集,用testfile中的測試樣本測試,無返回值
Keyword argument:
testfile -- 測試圖片目錄
trainfile -- 樣本圖片目錄
"""
trainFileList = os.listdir(trainfile)
trainFileSize = len(trainFileList)
labels = []
trainDataSet = np.zeros((trainFileSize, 1024))
for i in range(trainFileSize):
filenameStr = trainFileList[i]
digitnameStr = filenameStr.split('.')[0]
digitLabels = digitnameStr.split('_')[0]
labels.append(digitLabels)
trainDataSet[i, :] = img2vector(trainfile + '/' + filenameStr)
testFileList = os.listdir(testfile)
testNumber = len(testFileList)
errorcount = 0.0
for testname in testFileList:
testdigit = img2vector(testfile + '/' + testname)
classifyresult = kNN.classfiy(testdigit, trainDataSet, labels, k)
testStr = testname.split('.')[0]
testDigitLabel = testStr.split('_')[0]
if classifyresult != testDigitLabel:
errorcount += 1.0
#print('this test real digit is:%s, and the result is: %s' % (testDigitLabel, classifyresult))
print('k = %d, errorRatio is: %f' % (k, errorcount/float(testNumber)))
return
if __name__ == '__main__':
filename = 'C:/Users/lx/Desktop/MachineLearning-master/kNN/use Python and NumPy/testDigits/0_1.txt'
traindir= 'C:/Users/lx/Desktop/MachineLearning-master/kNN/use Python and NumPy/trainingDigits'
testdir = 'C:/Users/lx/Desktop/MachineLearning-master/kNN/use Python and NumPy/testDigits'
handwriteClassfiy(testdir, traindir, 3)
錯誤提示Traceback (most recent call last):
File "kNN.py", line 56, in <mole>
handwriteClassfiy(testdir, traindir, 3)
File "kNN.py", line 43, in handwriteClassfiy
classifyresult = kNN.classfiy(testdigit, trainDataSet, labels, k)
AttributeError: mole 'kNN' has no attribute 'classfiy'
你這個文件是不是就叫 kNN.py ?如果是的話那你這個裡面根本就沒有 classfiy 這個屬性,當然會報錯。
另外,import kNN 是 import 自己?
B. 如何快速使用Python神經網路識別手寫字元
CNN卷積神經網路是一種深度模型。它其實老早就已經可以成功訓練並且應用了(最近可能deep learning太火了,CNNs也往這裡面靠。雖然CNNs也屬於多層神經網路架構,但把它置身於DL家族,還是有不少人保留自己的理解的)。
C. python svm 怎麼訓練模型
支持向量機SVM(Support Vector Machine)是有監督的分類預測模型,本篇文章使用機器學習庫scikit-learn中的手寫數字數據集介紹使用Python對SVM模型進行訓練並對手寫數字進行識別的過程。
准備工作
手寫數字識別的原理是將數字的圖片分割為8X8的灰度值矩陣,將這64個灰度值作為每個數字的訓練集對模型進行訓練。手寫數字所對應的真實數字作為分類結果。在機器學習sklearn庫中已經包含了不同數字的8X8灰度值矩陣,因此我們首先導入sklearn庫自帶的datasets數據集。然後是交叉驗證庫,SVM分類演算法庫,繪制圖表庫等。
12345678910#導入自帶數據集from sklearn import datasets#導入交叉驗證庫from sklearn import cross_validation#導入SVM分類演算法庫from sklearn import svm#導入圖表庫import matplotlib.pyplot as plt#生成預測結果准確率的混淆矩陣from sklearn import metrics讀取並查看數字矩陣
從sklearn庫自帶的datasets數據集中讀取數字的8X8矩陣信息並賦值給digits。
12#讀取自帶數據集並賦值給digitsdigits = datasets.load_digits()查看其中的數字9可以發現,手寫的數字9以64個灰度值保存。從下面的8×8矩陣中很難看出這是數字9。
12#查看數據集中數字9的矩陣digits.data[9]以灰度值的方式輸出手寫數字9的圖像,可以看出個大概輪廓。這就是經過切割並以灰度保存的手寫數字9。它所對應的64個灰度值就是模型的訓練集,而真實的數字9是目標分類。我們的模型所要做的就是在已知64個灰度值與每個數字對應關系的情況下,通過對模型進行訓練來對新的手寫數字對應的真實數字進行分類。
1234#繪制圖表查看數據集中數字9的圖像plt.imshow(digits.images[9], cmap=plt.cm.gray_r, interpolation='nearest')plt.title('digits.target[9]')plt.show()
從混淆矩陣中可以看到,大部分的數字SVM的分類和預測都是正確的,但也有個別的數字分類錯誤,例如真實的數字2,SVM模型有一次錯誤的分類為1,還有一次錯誤分類為7。
D. Python手寫識別怎麼識
importos
importOperatePictureasOP
importOperateDatabaseasOD
importPictureAlgorithmasPA
importcsv
##Essentialvavriable基礎變數
#Standardsize標准大小
N=100
#Graythreshold灰度閾值
color=200/255
n=10
#讀取原CSV文件
reader=list(csv.reader(open('Database.csv',encoding='utf-8')))
#清除讀取後的第一個空行
delreader[0]
#讀取num目錄下的所有文件名
fileNames=os.listdir(r"./num/")
#對比fileNames與reader,得到新增的圖片newFileNames
newFileNames=OD.NewFiles(fileNames,reader)
print('Newpicturesare:',newFileNames)
#得到newFilesNames對應的矩陣
pic=OP.GetTrainPicture(newFileNames)
#將新增圖片矩陣存入CSV中
OD.SaveToCSV(pic,newFileNames)
#將原資料庫矩陣與新資料庫矩陣合並
pic=OD.Combination(reader,pic)
#得到待識別圖片
testFiles=os.listdir(r"./test/")
testPic=OP.GetTestPicture(testFiles)
#計算每一個待識別圖片的可能分類
result=PA.CalculateResult(testPic,pic)
foriteminresult:
foriinrange(n):
print('第'+str(i+1)+'個向量為'+str(item[i+n])+',距離為'+str(item[i]))
E. 花了2萬多買的Python70個項目,現在分享給大家,練手進廠靠它了
前言:
不管學習哪門語言都希望能做出實際的東西來,這個實際的東西當然就是項目啦,不用多說大家都知道學編程語言一定要做項目才行。
這里整理了70個Python實戰項目列表,都有完整且詳細的教程,你可以從中選擇自己想做的項目進行參考學習練手,你也可以從中尋找靈感去做自己的項目。
1、【Python 圖片轉字元畫】
2、【200行Python代碼實現2048】
3、【Python3 實現火車票查詢工具】
4、【高德API+Python解決租房問題 】
5、【Python3 色情圖片識別】
6、【Python 破解驗證碼】
7、【Python實現簡單的Web伺服器】
8、【pygame開發打飛機 游戲 】
9、【Django 搭建簡易博客】
10、【Python基於共現提取《釜山行》人物關系】
11、【基於scrapy爬蟲的天氣數據採集(python)】
12、【Flask 開發輕博客】
13、【Python3 圖片隱寫術】
14、【Python 實現簡易 Shell】
15、【使用 Python 解數學方程】
16、【PyQt 實現簡易瀏覽器】
17、【神經網路實現手寫字元識別系統 】
18、【Python 實現簡單畫板】
19、【Python實現3D建模工具】
20、【NBA常規賽結果預測——利用Python進行比賽數據分析】
21、【神經網路實現人臉識別任務】
22、【Python文本解析器】
23、【Python3 & OpenCV 視頻轉字元動畫】
24、【Python3 實現淘女郎照片爬蟲 】
25、【Python3實現簡單的FTP認證伺服器】
26、【基於 Flask 與 MySQL 實現番劇推薦系統】
27、【Python 實現埠掃描器】
28、【使用 Python 3 編寫系列實用腳本】
29、【Python 實現康威生命 游戲 】
30、【川普撞臉希拉里(基於 OpenCV 的面部特徵交換) 】
31、【Python 3 實現 Markdown 解析器】
32、【Python 氣象數據分析 -- 《Python 數據分析實戰》】
33、【Python實現鍵值資料庫】
34、【k-近鄰演算法實現手寫數字識別系統】
35、【ebay在線拍賣數據分析】
36、【Python 實現英文新聞摘要自動提取 】
37、【Python實現簡易區域網視頻聊天工具】
38、【基於 Flask 及爬蟲實現微信 娛樂 機器人】
39、【Python實現Python解釋器】
40、【Python3基於Scapy實現DDos】
41、【Python 實現密碼強度檢測器】
42、【使用 Python 實現深度神經網路】
43、【Python實現從excel讀取數據並繪製成精美圖像】
44、【人機對戰初體驗:Python基於Pygame實現四子棋 游戲 】
45、【Python3 實現可控制肉雞的反向Shell】
46、【Python打造漏洞掃描器 】
47、【Python應用馬爾可夫鏈演算法實現隨機文本生成】
48、【數獨 游戲 的Python實現與破解】
49、【使用Python定製詞雲】
50、【Python開發簡單計算器】
51、【Python 實現 FTP 弱口令掃描器】
52、【Python實現Huffman編碼解壓縮文件】
53、【Python實現Zip文件的暴力破解 】
54、【Python3 智能裁切圖片】
55、【Python實現網站模擬登陸】
56、【給Python3爬蟲做一個界面.妹子圖網實戰】
57、【Python 3 實現圖片轉彩色字元】
58、【自聯想器的 Python 實現】
59、【Python 實現簡單濾鏡】
60、【Flask 實現簡單聊天室】
61、【基於PyQt5 實現地圖中定位相片拍攝位置】
62、【Python實現模板引擎】
63、【Python實現遺傳演算法求解n-queens問題】
64、【Python3 實現命令行動態進度條】
65、【Python 獲取掛號信息並郵件通知】
66、【Python實現java web項目遠端自動化更新部署】
67、【使用 Python3 編寫 Github 自動周報生成器】
68、【使用 Python 生成分形圖片】
69、【Python 實現 Redis 非同步客戶端】
70、【Python 實現中文錯別字高亮系統】
最後:
以上項目列表希望可以給你在Python學習中帶來幫助~
獲取方式:轉發 私信「1」