日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

PythonOpencv-分类器—SVM,KNearest,RTrees,Boost,MLP

發(fā)布時間:2023/12/31 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PythonOpencv-分类器—SVM,KNearest,RTrees,Boost,MLP 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

原文鏈接:http://blog.csdn.net/gjy095/article/details/9243153

上一篇文章,不是很詳細(xì),這一篇解釋的清晰些,請訪問原始鏈接。

Rtrees介紹!參考鏈接:http://docs.opencv.org/modules/ml/doc/random_trees.html


Opencv提供了幾種分類器,例程里通過字符識別來進(jìn)行說明的

1、支持向量機(SVM):給定訓(xùn)練樣本,支持向量機建立一個超平面作為決策平面,使得正例和反例之間的隔離邊緣被最大化。

函數(shù)原型:訓(xùn)練原型 cv2.SVM.train(trainData, responses[, varIdx[, sampleIdx[, params]]])

?????????????????? 其中 trainData 為訓(xùn)練數(shù)據(jù),responses為對應(yīng)數(shù)據(jù)的標(biāo)識,

2、K近鄰(Knearest):K近鄰是移動惰性學(xué)習(xí)法,當(dāng)給定大量數(shù)據(jù)集時,該算法是計算密集的。最近鄰方法是基于類比學(xué)習(xí),即通過將給定的檢驗元組與和它相似的訓(xùn)練元組進(jìn)行比較來學(xué)習(xí)。訓(xùn)練元組用n個屬性來表示。當(dāng)給定位置元組時,K近鄰找出最接近未知元組的k個訓(xùn)練元組,未知元組被分配到k個最近鄰中最多的類。

函數(shù)原型:cv2.KNearest.train(trainData, responses[, sampleIdx[, isRegression[, maxK[, updateBase]]]])

?????????????????? 其中,trainData為訓(xùn)練數(shù)據(jù),responses為對應(yīng)的數(shù)據(jù)標(biāo)識,isRegression表示回歸運算還是訓(xùn)練,maxK為最大鄰居數(shù)

3、隨機樹(RTrees):個體決策樹的每個節(jié)點使用隨機選擇屬性決定劃分,每一棵樹依賴于獨立的抽樣,并與森林中所有的樹具有相同的分布的隨即向量的值。分類時,每棵樹都投票并且返回得票最多的類。

函數(shù)原型:cv2.RTrees.train(trainData, tflag, responses[, varIdx[, sampleIdx[, varType[, missingDataMask[, params]]]]])

?????????????????? 其中trainData為訓(xùn)練數(shù)據(jù),responses為對應(yīng)的數(shù)據(jù)標(biāo)識,tflag表示特征向量是行還是列表示,responses為表示對應(yīng)數(shù)據(jù)標(biāo)識

4、提升(Boost):權(quán)重賦予每個訓(xùn)練元組。迭代的學(xué)習(xí)k個分類器,學(xué)習(xí)到分類器Mi后,更新權(quán)重,使得其后的分類器Mi+1更關(guān)注誤分類的訓(xùn)練元組。Adaboost是一種流行的提升算法。給定數(shù)據(jù)集D,它包含d個類標(biāo)記的元組。開始對每個訓(xùn)練元組賦予相等的權(quán)重1/d。為組合分類器產(chǎn)生k個基分類器。在第i輪,從D中元組進(jìn)行抽樣,形成大小為d的訓(xùn)練集Di。使用有放回抽樣--同一個元組可能被選中多次。每個元組被選中的機會由它的權(quán)重決定。從訓(xùn)練集Di導(dǎo)出分類器Mi。然后使用Di作為檢驗集計算Mi的誤差。如果元組不正確的分類,則它的權(quán)重增加。如果元組正確的分類,則它的權(quán)重減少。權(quán)重越高越可能錯誤地分類。使用這些權(quán)重為下一輪分類器產(chǎn)生訓(xùn)練樣本。

函數(shù)原型:cv2.Boost.train(trainData, tflag, responses[, varIdx[, sampleIdx[, varType[, missingDataMask[, params[, update]]]]]])

5、多層感知(MLP):多層感知器用于解決單層神經(jīng)網(wǎng)絡(luò)不能解決非線性分類問題而提出的,訓(xùn)練多層感知器的流行方法是反向傳播,通過多層感知能夠通過多個輸入產(chǎn)生單一的輸出達(dá)到分類的結(jié)果。

函數(shù)原型:cv2.ANN_MLP.train(inputs, outputs, sampleWeights[, sampleIdx[, params[, flags]]])

代碼函數(shù)原型:

#decoding:utf-8 import numpy as np import cv2 def load_base(fn): a = np.loadtxt(fn, np.float32, delimiter=',', converters={ 0 : lambda ch : ord(ch)-ord('A') })#導(dǎo)入的字母特征數(shù)據(jù),并將字母轉(zhuǎn)化為數(shù)字類別 samples, responses = a[:,1:], a[:,0]#將類別給responses,特征給samples return samples, responses class LetterStatModel(object): class_n = 26 train_ratio = 0.5 def load(self, fn): self.model.load(fn) def save(self, fn): self.model.save(fn) def unroll_samples(self, samples): sample_n, var_n = samples.shape#獲取特征維數(shù)和特征個數(shù) new_samples = np.zeros((sample_n * self.class_n, var_n+1), np.float32) new_samples[:,:-1] = np.repeat(samples, self.class_n, axis=0) new_samples[:,-1] = np.tile(np.arange(self.class_n), sample_n) return new_samples def unroll_responses(self, responses): sample_n = len(responses) new_responses = np.zeros(sample_n*self.class_n, np.int32) resp_idx = np.int32( responses + np.arange(sample_n)*self.class_n ) new_responses[resp_idx] = 1 return new_responses class RTrees(LetterStatModel): def __init__(self): self.model = cv2.RTrees() def train(self, samples, responses): sample_n, var_n = samples.shape var_types = np.array([cv2.CV_VAR_NUMERICAL] * var_n + [cv2.CV_VAR_CATEGORICAL], np.uint8) #CvRTParams(10,10,0,false,15,0,true,4,100,0.01f,CV_TERMCRIT_ITER)); params = dict(max_depth=10 ) self.model.train(samples, cv2.CV_ROW_SAMPLE, responses, varType = var_types, params = params) def predict(self, samples): return np.float32( [self.model.predict(s) for s in samples] ) class KNearest(LetterStatModel): def __init__(self): self.model = cv2.KNearest() def train(self, samples, responses): self.model.train(samples, responses) def predict(self, samples): retval, results, neigh_resp, dists = self.model.find_nearest(samples, k = 10) return results.ravel() class Boost(LetterStatModel): def __init__(self): self.model = cv2.Boost() def train(self, samples, responses): sample_n, var_n = samples.shape new_samples = self.unroll_samples(samples) new_responses = self.unroll_responses(responses) var_types = np.array([cv2.CV_VAR_NUMERICAL] * var_n + [cv2.CV_VAR_CATEGORICAL, cv2.CV_VAR_CATEGORICAL], np.uint8) #CvBoostParams(CvBoost::REAL, 100, 0.95, 5, false, 0 ) params = dict(max_depth=5) #, use_surrogates=False) self.model.train(new_samples, cv2.CV_ROW_SAMPLE, new_responses, varType = var_types, params=params) def predict(self, samples): new_samples = self.unroll_samples(samples) pred = np.array( [self.model.predict(s, returnSum = True) for s in new_samples] ) pred = pred.reshape(-1, self.class_n).argmax(1) return pred class SVM(LetterStatModel): train_ratio = 0.1 def __init__(self): self.model = cv2.SVM() def train(self, samples, responses): params = dict( kernel_type = cv2.SVM_LINEAR, svm_type = cv2.SVM_C_SVC, C = 1 ) self.model.train(samples, responses, params = params) def predict(self, samples): return np.float32( [self.model.predict(s) for s in samples] ) class MLP(LetterStatModel): def __init__(self): self.model = cv2.ANN_MLP() def train(self, samples, responses): sample_n, var_n = samples.shape new_responses = self.unroll_responses(responses).reshape(-1, self.class_n) layer_sizes = np.int32([var_n, 100, 100, self.class_n]) self.model.create(layer_sizes) # CvANN_MLP_TrainParams::BACKPROP,0.001 params = dict( term_crit = (cv2.TERM_CRITERIA_COUNT, 300, 0.01), train_method = cv2.ANN_MLP_TRAIN_PARAMS_BACKPROP, bp_dw_scale = 0.001, bp_moment_scale = 0.0 ) self.model.train(samples, np.float32(new_responses), None, params = params) def predict(self, samples): ret, resp = self.model.predict(samples) return resp.argmax(-1) if __name__ == '__main__': import getopt import sys models = [RTrees, KNearest, Boost, SVM, MLP] # NBayes models = dict( [(cls.__name__.lower(), cls) for cls in models] )#將名字之母字母轉(zhuǎn)為小寫 print 'USAGE: letter_recog.py [--model <model>] [--data <data fn>] [--load <model fn>] [--save <model fn>]' print 'Models: ', ', '.join(models) print args, dummy = getopt.getopt(sys.argv[1:], '', ['model=', 'data=', 'load=', 'save=']) args = dict(args) args.setdefault('--model', 'boost') args.setdefault('--data', '../letter-recognition.data') print 'loading data %s ...' % args['--data'] samples, responses = load_base(args['--data']) Model = models[args['--model']] model = Model() train_n = int(len(samples)*model.train_ratio)#獲取訓(xùn)練數(shù)據(jù)的數(shù)目 if '--load' in args: fn = args['--load'] print 'loading model from %s ...' % fn model.load(fn) else: print 'training %s ...' % Model.__name__ model.train(samples[:train_n], responses[:train_n]) print 'testing...' train_rate = np.mean(model.predict(samples[:train_n]) == responses[:train_n])#前一半進(jìn)行訓(xùn)練,并得到訓(xùn)練準(zhǔn)確率 test_rate = np.mean(model.predict(samples[train_n:]) == responses[train_n:])#后一半進(jìn)行測試,并得到測試準(zhǔn)確率 print 'train rate: %f test rate: %f' % (train_rate*100, test_rate*100) if '--save' in args: fn = args['--save'] print 'saving model to %s ...' % fn model.save(fn) cv2.destroyAllWindows()

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結(jié)

以上是生活随笔為你收集整理的PythonOpencv-分类器—SVM,KNearest,RTrees,Boost,MLP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产午夜精品一区二区三区欧美 | 日韩欧美国产一区二区三区 | 日韩av免费播放 | 国产三区在线成人av | 欧美一级在线看 | 欧美日韩国产亚洲沙发 | 舐丝袜脚视频丨vk | 69社| 一级片视频免费观看 | 色老头综合 | 日日噜噜噜夜夜爽爽狠狠 | 无遮挡av | 韩国甜性涩爱 | 无人在线观看高清视频 | 国产精品午夜未成人免费观看 | 男人喷出精子视频 | 黑人欧美一区二区三区 | 日本 奴役 捆绑 受虐狂xxxx | 午夜欧美成人 | 182av| 亚洲一区二区精品在线 | 国产真实乱人偷精品人妻 | 涩涩屋视频在线观看 | 重口变态虐黄网站 | 久久精品国产亚洲av久 | 91大神在线免费观看 | 日产毛片 | 男女操网站 | 日本亚洲网站 | 麻豆视频在线免费看 | 熟女高潮一区二区三区视频 | 老鸭窝视频在线观看 | 成人特级毛片69免费观看 | 中文字幕无线码 | 久草免费在线视频 | 国产精品无码电影在线观看 | 嫩模一区 | 凹凸日日摸日日碰夜夜 | 国产精品久久9 | 激情五月俺也去 | 亚洲av片不卡无码久久 | 胸网站| 美女一区二区三区 | 日日躁夜夜躁狠狠躁 | 九色国产 | 国产精品一卡 | 亚洲国产中文在线 | 欧美日韩电影一区二区 | 国产免费一区视频观看免费 | 亚洲91精品 | 欧洲精品无码一区二区 | 国产精品无码一区二区三区三 | 特黄特黄视频 | 亚洲成人免费视频 | 国产乱人乱精一区二视频国产精品 | 国产精品精品国产色婷婷 | 九色porny自拍视频 | 国产日产精品一区 | 超碰人体 | 国产一区二区三区网站 | 欧美精品首页 | 亚洲成人一区二区 | 国产国语老龄妇女a片 | 成人爽a毛片一区二区免费 日本高清免费看 | 国产 日韩 欧美 成人 | 日韩毛片一级 | 激情五月亚洲 | 国产情侣第一页 | 久章操| 我爱我色成人网 | 国产天堂在线观看 | 日批视频 | av色婷婷| 国产91综合一区在线观看 | 我要爱爱网 | 梦梦电影免费高清在线观看 | 精品视频在线免费观看 | 麻豆精品免费观看 | 日韩第八页 | 日韩二区在线 | 亚洲男女一区二区三区 | 18禁免费观看网站 | www.蜜桃av| 欧美一区二区三区四 | 五月丁香久久婷婷 | 欧美成人综合 | 日本黄色中文字幕 | 国产传媒专区 | av字幕网 | 欧美成人黄 | 欧美日韩乱 | 精品国产一二三区 | 一级作爱视频 | 中文字幕一区二区三区四区欧美 | 青青免费在线视频 | 51啪影院| 在线不卡毛片 | wwwxxx日本 | 电车痴汉在线观看 |