SVM手寫數字的識別 python

2021-07-25 21:39:34 字數 1595 閱讀 1648

svm手寫數字的識別---python

1、svm手寫數字識別

識別步驟:

(1)樣本影象的準備。

(2)影象尺寸標準化:將影象大小都標準化為8*8大小。

(3)讀取未知樣本影象,提取影象特徵,生成影象特徵組。

(4)將未知測試樣本影象特徵組送入svm進行測試,將測試的結果輸出。

識別**:

#!/usr/bin/env python

import 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     

print testfn+":",

print svm.pred(testx)

樣本:

SVM手寫數字識別

準備資料 基於二值影象構造資料 分析資料 對影象向量進行目測 訓練演算法 採用三種不同的方法,不同的引數 線性分類器 二次多項式核函式 徑向基核函式 測試並計算錯誤率 本實驗使用的訓練資料如下圖所示,為若干個手寫的 0 和 9 的數字影象。本實驗使用的測試資料如下圖所示,為若干個手寫的 0 和 9 ...

SVM入門 手寫數字識別

svm是乙個constrained optimization problem 約束最優化問題 其中constrain是分指類,optimization是指使得margin最大 scikit learn是用於python程式語言的免費軟體機器學習庫。它具有各種分類,回歸和聚類演算法,包括支援向量機,隨...

手寫數字識別

這幾天在想這做字元識別方面的程式,看了很多 但是發現 上的幾乎用處都不是特別的大,理論一大堆,但是用在程式裡面則很難實現,看到有些 上說用連碼法,但是連碼法對結構的變化太敏感了,但是也從一些 裡獲得了一些靈感,我採用的是網格匹配法,準備工作採集樣本,得到了樣本的網格資訊用於接下來的識別,當然也可 一...