會員中心 |  會員注冊  |  兼職信息發(fā)布    瀏覽手機(jī)版!    精選9.9元!    人工翻譯    英語IT服務(wù) 貧困兒童資助 | 留言板 | 設(shè)為首頁 | 加入收藏  繁體中文
當(dāng)前位置:首頁 > 機(jī)翻技術(shù) > 識別技術(shù) > 正文

示例:分布式SVM的Pegasos算法

發(fā)布時間: 2023-04-06 09:22:13   作者:etogether.net   來源: 網(wǎng)絡(luò)   瀏覽次數(shù):


在此不對該代碼做過多分析,它只為Pegasos算法的MapReduce版本做一個鋪墊。下面將在mrjob中建立并運(yùn)行一個MapReduce版本的Pegasos算法。


2. 訓(xùn)練算法:用mrjob實(shí)現(xiàn)MapReduce版本的SVM

在此將用MapReduce來實(shí)現(xiàn)程序清單1的Pegasos算法,之后再用mrjob框架運(yùn)行該算法。首先要明白如何將該算法劃分成map階段和reduce階段,確認(rèn)哪些可以并行,哪些不能并行。


對程序清單15-4的代碼運(yùn)行情況稍作觀察將會發(fā)現(xiàn),大量的時間花費(fèi)在內(nèi)積計算上。另外,內(nèi)積運(yùn)算可以并行,但創(chuàng)建新的權(quán)重變量w是不能并行的。這就是將算法改寫為MapReduce作業(yè)的一個切入點(diǎn)。在編寫mapper和reducer的代碼之前,先完成一部分外圍代碼。打開文本編輯器,

創(chuàng)建一個新文件mrSVM.py,然后在該文件中添加下面程序清單的代碼。


程序清單2 mrjob中分布式Pegasos算法的外圍代碼


程序清單2.png

程序清單2.1.png


程序清單2 的代碼進(jìn)行了一些設(shè)定,從而保證了map和reduce階段的正確執(zhí)行。在程序開頭,Mrjob、NumPy和Pickle模塊分別通過一條include語句導(dǎo)入。之后創(chuàng)建了一個mrjob類MRsvm,其中__init__()方法初始化了一些在map和reduce階段用到的變量。Python的模塊Pickle在加載不同版本的Python文件時會出現(xiàn)問題。為此,我將Python2.6和2.7兩個版本對應(yīng)的數(shù)據(jù)文件各自存為svmDat26和svmDat27。


對應(yīng)于命令行輸入的參數(shù),configure_options()方法建立了一些變量,包括迭代次數(shù)(T)、待處理列表的大?。╧)。這些參數(shù)都是可選的,如果未指定,它們將采用默認(rèn)值。


最后,steps()方法告訴mrjob應(yīng)該做什么,以什么順序來做。它創(chuàng)建了一個Python的列表,包含map、map_fin和reduce這幾個步驟,然后將該列表乘以迭代次數(shù),即在每次迭代中重復(fù)調(diào)用這個列表。為了保證作業(yè)里的任務(wù)鏈能正確執(zhí)行,mapper需要能夠正確讀取reducer輸出的數(shù)據(jù)。單個MapReduce作業(yè)中無須考慮這個因素,這里需要特別注意輸入和輸出格式的對應(yīng)。


我們對輸入和輸出格式進(jìn)行如下規(guī)定:


Mapper

     Inputs:

    Outputs: nothing


Mapper_final

     Inputs: nothing

    Outputs:<1, valuelist="">


Reducer

     Inputs:

    Outputs:


傳入的值是列表數(shù)組,valueList的第一個元素是一個字符串,用于表示列表的后面存放的是什么類型的數(shù)據(jù),例如{'x',23)和['w',[1,5,6]]。每個mapper_final都將輸出同樣的key, 這是為了保證所有的key/value對都輸出給同一個reducer。


定義好了輸入和輸出之后,下面開始寫mapper和reducer方法,打開mrSVM.py文件并在MRsvm類中添加下面的代碼。



微信公眾號

[上一頁][1] [2] [3] [下一頁] 【歡迎大家踴躍評論】
  • 上一篇:語音識別中的問題
  • 下一篇:基于協(xié)同過濾的推薦引擎


  • 《譯聚網(wǎng)》倡導(dǎo)尊重與保護(hù)知識產(chǎn)權(quán)。如發(fā)現(xiàn)本站文章存在版權(quán)問題,煩請30天內(nèi)提供版權(quán)疑問、身份證明、版權(quán)證明、聯(lián)系方式等發(fā)郵件至info@qiqee.net,我們將及時溝通與處理。


我來說兩句
評分: 1分 2分 3分 4分 5分
評論內(nèi)容:
驗(yàn)證碼:
【網(wǎng)友評論僅供其表達(dá)個人看法,并不表明本站同意其觀點(diǎn)或證實(shí)其描述?!?
評論列表
已有 0 條評論(查看更多評論)