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

示例:分布式SVM的Pegasos算法

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


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


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

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


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

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


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


程序清單2.png

程序清單2.1.png


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


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


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


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


Mapper

     Inputs:

    Outputs: nothing


Mapper_final

     Inputs: nothing

    Outputs:<1, valuelist="">


Reducer

     Inputs:

    Outputs:


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


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



微信公眾號(hào)

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


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


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