svm手寫數字的識別---python
1、svm手寫數字識別
識別步驟:
(1)樣本影象的準備。
(2)影象尺寸標準化:將影象大小都標準化為8*8大小。
(3)讀取未知樣本影象,提取影象特徵,生成影象特徵組。
(4)將未知測試樣本影象特徵組送入svm進行測試,將測試的結果輸出。
識別**:
#!/usr/bin/env pythonimport numpy as np
import mlpy
import cv2
print 'loading ...'
def getnumc(fn):樣本:'''返回數字特徵'''
fnimg = cv2.imread(fn)
#讀取影象
img=cv2.resize(fnimg,(8,8))
#將影象大小調整為8*8
alltz=
for now_h in xrange(0,8):
xtz=
for now_w in xrange(0,8):
b = img[now_h,now_w,0]
g = img[now_h,now_w,1]
r = img[now_h,now_w,2]
btz=255-b
gtz=255-g
rtz=255-r
if btz>0 or gtz>0 or rtz>0:
nowtz=1
else:
nowtz=0
alltz+=xtz
return alltz
#讀取樣本數字
x=y=
for numi in xrange(1,10):
for numij in xrange(1,5):
fn='nums/'+str(numi)+'-'+str(numij)+'.png'
x=np.array(x)
y=np.array(y)
svm = mlpy.libsvm(svm_type='c_svc', kernel_type='poly',gamma=10)
svm.learn(x, y)
print u"訓練樣本測試:"
print svm.pred(x)
print u"未知影象測試:"
for iii in xrange (1,10):
testfn= 'nums/test/'+str(iii)+'-test.png'
testx=
print testfn+":",
print svm.pred(testx)
SVM手寫數字識別
準備資料 基於二值影象構造資料 分析資料 對影象向量進行目測 訓練演算法 採用三種不同的方法,不同的引數 線性分類器 二次多項式核函式 徑向基核函式 測試並計算錯誤率 本實驗使用的訓練資料如下圖所示,為若干個手寫的 0 和 9 的數字影象。本實驗使用的測試資料如下圖所示,為若干個手寫的 0 和 9 ...
SVM入門 手寫數字識別
svm是乙個constrained optimization problem 約束最優化問題 其中constrain是分指類,optimization是指使得margin最大 scikit learn是用於python程式語言的免費軟體機器學習庫。它具有各種分類,回歸和聚類演算法,包括支援向量機,隨...
手寫數字識別
這幾天在想這做字元識別方面的程式,看了很多 但是發現 上的幾乎用處都不是特別的大,理論一大堆,但是用在程式裡面則很難實現,看到有些 上說用連碼法,但是連碼法對結構的變化太敏感了,但是也從一些 裡獲得了一些靈感,我採用的是網格匹配法,準備工作採集樣本,得到了樣本的網格資訊用於接下來的識別,當然也可 一...