船舶安檢員是船舶安全管理體系中至關(guān)重要的一環(huán),在保障船舶安全和順利航行方面發(fā)揮著不可替代的作用。船舶安檢員要求具備豐富的船舶安全知識(shí)和嚴(yán)謹(jǐn)?shù)墓ぷ鲬B(tài)度,以確保船舶及其船員的安全。
船舶安檢員的責(zé)任包括但不限于:
為勝任船舶安檢員這一職位,專(zhuān)業(yè)知識(shí)、技能和素養(yǎng)都至關(guān)重要。以下是船舶安檢員需要具備的技能要求:
船舶安檢員這一職業(yè)有著明確的晉升和發(fā)展通道,具體包括但不限于:
船舶安檢員這一職業(yè)在全球范圍內(nèi)具有廣闊的發(fā)展前景,對(duì)于有志于從事船舶安全管理工作的人來(lái)說(shuō),是一個(gè)充滿挑戰(zhàn)和機(jī)遇的職業(yè)。
船舶安檢員作為船舶安全管理中不可或缺的一環(huán),其重要性不可低估。只有具備優(yōu)秀的技能和專(zhuān)業(yè)知識(shí),才能勝任這一職位,確保船舶和船員的安全。隨著全球航運(yùn)行業(yè)的發(fā)展和安全意識(shí)的提高,船舶安檢員的職業(yè)前景將更加廣闊,也為行業(yè)提供了更多的發(fā)展空間和機(jī)遇。
工資很低,待遇很差,不要來(lái)了,我就是這個(gè)公司的員工,不怕打擊你,安檢員和站務(wù)員應(yīng)該算是最低的
機(jī)場(chǎng)安檢員是承擔(dān)著重要任務(wù)的職業(yè),他們不僅要確保機(jī)場(chǎng)的安全,還要確保旅客的順利通行。機(jī)場(chǎng)安檢員的工作要求嚴(yán)格,但這份工作也為他們提供了一個(gè)相對(duì)穩(wěn)定和可觀的收入。
機(jī)場(chǎng)安檢員的工資是根據(jù)多個(gè)因素來(lái)確定的,包括地理位置、工作經(jīng)驗(yàn)和職位。以下是關(guān)于機(jī)場(chǎng)安檢員工資的一些相關(guān)信息。
機(jī)場(chǎng)安檢員的工資在不同地區(qū)可能會(huì)有所不同。通常來(lái)說(shuō),發(fā)達(dá)地區(qū)的工資較高,因?yàn)槌杀旧钕鄬?duì)較高,而經(jīng)濟(jì)欠發(fā)達(dá)地區(qū)的工資可能相對(duì)較低。所以,如果你在經(jīng)濟(jì)發(fā)達(dá)的大城市工作,你的工資可能會(huì)比在小城市或偏遠(yuǎn)地區(qū)的同行更高。
此外,國(guó)家的經(jīng)濟(jì)狀況也會(huì)影響到機(jī)場(chǎng)安檢員的工資水平。一些國(guó)家可能會(huì)提供較高的薪水,以吸引和留住有才能的安檢員。
機(jī)場(chǎng)安檢員的工作經(jīng)驗(yàn)對(duì)他們的工資水平也有很大的影響。通常來(lái)說(shuō),有更多經(jīng)驗(yàn)的安檢員可以期望獲得更高的薪水。這是因?yàn)樗麄冊(cè)诠ぷ髦蟹e累了更多的技能和知識(shí),并能夠更好地應(yīng)對(duì)各種安全挑戰(zhàn)。
一些機(jī)場(chǎng)安檢部門(mén)也可能會(huì)提供一些額外的激勵(lì)措施,以鼓勵(lì)安檢員繼續(xù)提升自己的技能和知識(shí)。這些額外的激勵(lì)可以包括提供培訓(xùn)機(jī)會(huì)、晉升機(jī)會(huì)和獎(jiǎng)金制度。
機(jī)場(chǎng)安檢員的職位也會(huì)對(duì)他們的工資有所影響。在這個(gè)行業(yè)中,安檢員的職位分為不同的級(jí)別,包括初級(jí)安檢員、高級(jí)安檢員和主管。通常來(lái)說(shuō),隨著職位級(jí)別的提升,安檢員的工資也會(huì)相應(yīng)增加。
更高級(jí)別的職位通常要求更多的責(zé)任和技能,因此雇主會(huì)給予更高的薪水作為回報(bào)。
除了基本工資外,機(jī)場(chǎng)安檢員還可能享受其他福利待遇。這些福利待遇可以包括醫(yī)療保險(xiǎn)、養(yǎng)老金、帶薪休假等。這些福利可以為安檢員提供額外的收入和保障。
此外,機(jī)場(chǎng)安檢員在工作過(guò)程中可能會(huì)獲得一些額外的津貼或津貼,以應(yīng)對(duì)特殊的工作要求或工作時(shí)間。這些額外津貼可以幫助安檢員獲得更高的總收入。
機(jī)場(chǎng)安檢員是一個(gè)要求專(zhuān)業(yè)和責(zé)任心的職業(yè),他們的工資水平在地理位置、工作經(jīng)驗(yàn)和職位等多個(gè)因素的影響下確定。雖然工資有一定的差異,但機(jī)場(chǎng)安檢員的工資一般都是相對(duì)穩(wěn)定和可觀的。
如果你對(duì)航空業(yè)和安全工作感興趣,并且愿意為保護(hù)乘客和機(jī)場(chǎng)安全做出貢獻(xiàn),那么成為一名機(jī)場(chǎng)安檢員可能是一個(gè)不錯(cuò)的職業(yè)選擇。
黃花機(jī)場(chǎng)作為一個(gè)繁忙的國(guó)際機(jī)場(chǎng),擁有龐大的旅客流量。安全是機(jī)場(chǎng)工作的首要任務(wù),而安檢員作為機(jī)場(chǎng)安全的第一道防線,承擔(dān)著重要的工作職責(zé)。本文將為大家介紹黃花機(jī)場(chǎng)安檢員的工作職責(zé)和所需的技能要求。
黃花機(jī)場(chǎng)安檢員的工作職責(zé)主要包括:
除了以上的工作職責(zé),黃花機(jī)場(chǎng)安檢員還需要具備以下的技能要求:
黃花機(jī)場(chǎng)安檢員的工作是一項(xiàng)充滿責(zé)任和挑戰(zhàn)的職業(yè)。只有具備專(zhuān)業(yè)知識(shí)和必備的技能,才能勝任這份工作。此外,安檢員還需要時(shí)刻保持高度的警惕性和責(zé)任心,確保機(jī)場(chǎng)的安全和暢通。
希望通過(guò)本文的介紹,大家對(duì)黃花機(jī)場(chǎng)安檢員的工作職責(zé)和技能要求有了更深入的了解。
作為一名安檢員,經(jīng)過(guò)長(zhǎng)期的培訓(xùn)和實(shí)踐,我積累了許多寶貴的經(jīng)驗(yàn)和心得。安檢員是維護(hù)人們生命財(cái)產(chǎn)安全的守護(hù)者,我們的職責(zé)是確保航空安全和公共場(chǎng)所的平安。在這篇博文中,我將分享一些我在培訓(xùn)過(guò)程中學(xué)到的技能與體會(huì),希望能對(duì)即將成為安檢員的人們有所幫助。
作為一名安檢員,良好的職業(yè)素養(yǎng)是非常重要的。我們需要以專(zhuān)業(yè)的態(tài)度對(duì)待工作,始終保持職業(yè)操守。首先,我們應(yīng)該時(shí)刻保持良好的形象,穿戴整潔,工作服要整齊干凈。此外,我們還需要注重語(yǔ)言表達(dá)和溝通技巧,與旅客和同事保持良好的關(guān)系。我們要時(shí)刻保持冷靜和耐心,不論遇到什么情況,都要以專(zhuān)業(yè)的態(tài)度解決問(wèn)題。
安檢員的主要任務(wù)是進(jìn)行嚴(yán)格的安全檢查,確保旅客和乘客的安全。在培訓(xùn)過(guò)程中,我們學(xué)會(huì)了使用各種安檢設(shè)備,包括金屬探測(cè)器、X光機(jī)等。我們需要熟練掌握這些設(shè)備的使用方法,并在實(shí)際操作中保持高度警惕。在安全檢查過(guò)程中,我們要注重細(xì)節(jié),耐心而又認(rèn)真地檢查每一個(gè)行李和旅客。我們要學(xué)會(huì)辨別可疑物品,并采取相應(yīng)的措施,以確保場(chǎng)所的安全。
作為一名安檢員,我們要經(jīng)常面對(duì)各種突發(fā)狀況。在培訓(xùn)過(guò)程中,我們學(xué)習(xí)了應(yīng)急處置的技巧和方法。我們需要具備分析和判斷的能力,并能夠在緊急情況下迅速反應(yīng)。我們要學(xué)會(huì)與其他安檢員和相關(guān)部門(mén)進(jìn)行緊密合作,共同制定應(yīng)對(duì)方案。我們要經(jīng)常進(jìn)行模擬演練,提升自己的反應(yīng)和處置能力,以保證在實(shí)際工作中能夠應(yīng)對(duì)各種突發(fā)情況。
在安檢工作中,與旅客和同事保持良好的人際關(guān)系是非常重要的。我們要學(xué)會(huì)傾聽(tīng)和理解旅客的需求和意見(jiàn),并及時(shí)解決他們的問(wèn)題。我們要學(xué)會(huì)與同事團(tuán)結(jié)合作,互相支持,形成良好的工作氛圍。人際關(guān)系的良好管理不僅可以提高工作效率,還能夠減少工作中的摩擦和矛盾,為工作的順利開(kāi)展提供良好的環(huán)境。
作為一名安檢員,我們不能停止學(xué)習(xí)和提升自己。航空安全技術(shù)和設(shè)備都在不斷更新和發(fā)展,我們需要與時(shí)俱進(jìn)。我們要持續(xù)學(xué)習(xí)新的安檢技術(shù)和操作方法,積極參加培訓(xùn)和研討會(huì),不斷提高自己的專(zhuān)業(yè)水平。此外,我們還要關(guān)注國(guó)際安全標(biāo)準(zhǔn)和最新的安全動(dòng)態(tài),保持對(duì)航空安全領(lǐng)域的了解和洞察。
總結(jié)起來(lái),成為一名優(yōu)秀的安檢員需要具備良好的職業(yè)素養(yǎng)、嚴(yán)格的安全檢查能力、應(yīng)急處置能力、人際關(guān)系管理能力和持續(xù)學(xué)習(xí)與提升的精神。通過(guò)不斷學(xué)習(xí)和實(shí)踐,我相信每個(gè)人都能夠成為一名出色的安檢員,在工作中發(fā)揮自己的價(jià)值,為保障航空安全和公共安全作出貢獻(xiàn)。
隨著社會(huì)的發(fā)展和科技的進(jìn)步,智慧城市的概念逐漸走進(jìn)人們的視野。作為智慧城市中不可或缺的一部分,安檢員的作用日益凸顯。
智慧城市中的安檢員不再是簡(jiǎn)單執(zhí)行安檢任務(wù)的人員,他們更像是智慧城市的守護(hù)者和管理者。通過(guò)科技手段的運(yùn)用,安檢員可以更加高效地監(jiān)控城市中的安全情況,及時(shí)發(fā)現(xiàn)并應(yīng)對(duì)各類(lèi)安全隱患。
智慧城市安檢員需要具備一定的科技技能,能夠熟練操作各類(lèi)安檢設(shè)備和監(jiān)控系統(tǒng)。此外,他們還需要具備較強(qiáng)的應(yīng)變能力和危機(jī)處理能力,能夠在緊急情況下冷靜應(yīng)對(duì),有效維護(hù)城市的安全穩(wěn)定。
隨著智慧城市建設(shè)的不斷推進(jìn),智慧城市安檢員的需求也將持續(xù)增加。未來(lái),智慧城市安檢員將成為城市管理中不可或缺的一支力量,為城市的發(fā)展和居民的安全保駕護(hù)航。
地鐵安檢員是地鐵安全管理的重要一環(huán),其工作需要高度的責(zé)任感和專(zhuān)業(yè)技能。而作為應(yīng)聘者,如何成功通過(guò)地鐵安檢員面試,是關(guān)乎個(gè)人職業(yè)發(fā)展的重要一步。以下是一些地鐵安檢員面試的技巧和注意事項(xiàng),希望能對(duì)您有所幫助。
在準(zhǔn)備地鐵安檢員面試前,首先要了解地鐵安檢員的工作職責(zé)。地鐵安檢員主要負(fù)責(zé)對(duì)乘客攜帶的行李和物品進(jìn)行安全檢查,以確保乘客和地鐵設(shè)施的安全。因此,在應(yīng)聘地鐵安檢員崗位時(shí),應(yīng)聘者需要清楚地了解這項(xiàng)工作的專(zhuān)業(yè)性和責(zé)任感,以便在面試中展現(xiàn)出應(yīng)有的素質(zhì)。
在面試中,常見(jiàn)的問(wèn)題可能涉及到應(yīng)聘者的個(gè)人背景、安檢工作的相關(guān)經(jīng)驗(yàn)及技能、應(yīng)對(duì)突發(fā)情況的能力等。因此,應(yīng)聘者需要提前準(zhǔn)備充分,對(duì)可能會(huì)被問(wèn)到的問(wèn)題進(jìn)行思考并給予恰當(dāng)?shù)幕卮穑宫F(xiàn)出自己的專(zhuān)業(yè)素養(yǎng)和工作能力。
作為地鐵安檢員,團(tuán)隊(duì)合作是非常重要的。在面試中,應(yīng)聘者可以通過(guò)舉例說(shuō)明自己在以往工作中與同事合作完成任務(wù)的經(jīng)驗(yàn),或者闡述個(gè)人的團(tuán)隊(duì)合作態(tài)度和看法,以突出自己的團(tuán)隊(duì)合作意識(shí)。
地鐵安檢員在工作中可能會(huì)面臨各種緊急情況,因此應(yīng)聘者需要在面試中展現(xiàn)出自己對(duì)于突發(fā)情況的處理能力和應(yīng)變能力。這可以通過(guò)舉例說(shuō)明過(guò)往經(jīng)驗(yàn),或者描述自己的緊急情況處理思路和方法來(lái)展現(xiàn)。
通過(guò)以上幾點(diǎn)技巧和注意事項(xiàng),相信您能更有把握地準(zhǔn)備和應(yīng)對(duì)地鐵安檢員的面試。祝您面試順利,成功獲得這份工作!
感謝您閱讀本文,希望這些技巧能夠幫助您成功通過(guò)地鐵安檢員面試,開(kāi)啟您的地鐵安檢員職業(yè)生涯。
你好:
安檢員證每年兩次五月份一次,十月份一次。
初級(jí)是當(dāng)年就可以考,中級(jí)是初級(jí)滿兩年大專(zhuān)以上學(xué)歷可以考,高級(jí)是中級(jí)考完滿三年大專(zhuān)以上學(xué)歷可以考。技師現(xiàn)在只是全國(guó)大比武前幾名才是,現(xiàn)在鑒定站還不可以考。技師上面還有高級(jí)技師。技師全國(guó)就很少
理論 你把民航安全員的五級(jí)安全員內(nèi)容看好驗(yàn)證 人身檢查 開(kāi)包檢查 這些也是很簡(jiǎn)單的 多做幾次就好了驗(yàn)證 2分鐘驗(yàn)40張最多錯(cuò)4張 然后回答問(wèn)題 很簡(jiǎn)單人身 就是從一個(gè)人身上 3分鐘 按相應(yīng)的檢查順序 查出違禁品 然后回答問(wèn)題開(kāi)包 就是給4分鐘查危險(xiǎn)物品(多件)放在相應(yīng)的筐里 然后也是回答問(wèn)題 理論 你把民航安全員的五級(jí)安全員內(nèi)容看好驗(yàn)證 人身檢查 開(kāi)包檢查 這些也是很簡(jiǎn)單的 多做幾次就好了驗(yàn)證 2分鐘驗(yàn)40張最多錯(cuò)4張 然后回答問(wèn)題 很簡(jiǎn)單人身 就是從一個(gè)人身上 3分鐘 按相應(yīng)的檢查順序 查出違禁品 然后回答問(wèn)題開(kāi)包 就是給4分鐘查危險(xiǎn)物品(多件)放在相應(yīng)的筐里 然后也是回答問(wèn)題
安檢員是國(guó)家統(tǒng)一考試,和自考本科是一樣的,有政府統(tǒng)辦,考試地點(diǎn)不定,到考試時(shí)間,就會(huì)知道。如果你是在學(xué)校是由學(xué)校安排,不清楚的的到考試時(shí)間政府的考試信息上會(huì)有的。復(fù)習(xí)的時(shí)候,難免會(huì)遇到學(xué)習(xí)困難,優(yōu)題寶APP可以幫搜題找答案。
以上回答希望對(duì)你有用。
隨著社會(huì)的進(jìn)步和發(fā)展,人們對(duì)于公共安全的重視程度也越來(lái)越高。作為維護(hù)旅客安全的重要一環(huán),安檢員的服務(wù)禮儀至關(guān)重要。安檢員是保障航空、鐵路、地鐵等公共交通系統(tǒng)安全運(yùn)行的關(guān)鍵性崗位,他們不僅需要具備專(zhuān)業(yè)的技巧,還需要嫻熟的服務(wù)禮儀來(lái)提供周到的服務(wù)。
作為一名合格的安檢員,服務(wù)禮儀規(guī)范是必備的素質(zhì)之一。下面將介紹幾點(diǎn)安檢員需遵守的服務(wù)禮儀規(guī)范。
安檢員是旅客出行的第一道關(guān)口,他們需要以親切友好的態(tài)度迎接旅客。在接待旅客時(shí),安檢員應(yīng)該面帶微笑,平和自然地與旅客打招呼,使用文明用語(yǔ)與旅客進(jìn)行溝通,讓旅客感受到如家一般的溫暖。
安檢員在工作中需要牢記專(zhuān)業(yè)的工作流程,確保每個(gè)環(huán)節(jié)都按照規(guī)定進(jìn)行。他們應(yīng)該準(zhǔn)確判斷旅客的行李物品是否符合安全規(guī)定,嚴(yán)格執(zhí)行安檢程序,對(duì)于違禁物品進(jìn)行及時(shí)查處和處理。遵守規(guī)范的工作流程能夠提高工作效率,確保安全運(yùn)行。
安檢過(guò)程中,旅客的個(gè)人隱私是需要得到保護(hù)的。安檢員需要嚴(yán)格遵守相關(guān)隱私保護(hù)法規(guī),不得將旅客的個(gè)人隱私信息外泄,確保旅客的隱私權(quán)益。在處理涉及個(gè)人隱私的問(wèn)題時(shí),安檢員應(yīng)該保持謹(jǐn)慎和敬業(yè)的態(tài)度。
旅客在安檢過(guò)程中可能會(huì)有各種問(wèn)題和疑慮,安檢員需要耐心細(xì)致地解答。無(wú)論是關(guān)于安檢流程,還是關(guān)于行李物品是否符合安全規(guī)定等問(wèn)題,安檢員應(yīng)該給予明確的解答和指導(dǎo)。通過(guò)耐心回答旅客的問(wèn)題,能夠增強(qiáng)旅客對(duì)安檢工作的信任感。
安檢員作為服務(wù)行業(yè)的一員,需要具備良好的職業(yè)素養(yǎng)和文明待人的態(tài)度。無(wú)論面對(duì)旅客的情緒變化,還是處理突發(fā)事件,安檢員都要保持冷靜和理性,不得妄語(yǔ)恐嚇旅客。在服務(wù)過(guò)程中,安檢員應(yīng)該用禮貌的語(yǔ)言與旅客交流,展現(xiàn)職業(yè)魅力。
安全是安檢工作的首要任務(wù),安檢員需要具備豐富的安全知識(shí)和緊急處理能力。他們需要對(duì)潛在的安全風(fēng)險(xiǎn)保持高度警惕,并能夠迅速做出正確的判斷和處理。只有具備敏銳的安全意識(shí)和高效的緊急處理能力,才能更好地完成安檢任務(wù)。
安檢員作為服務(wù)行業(yè)的從業(yè)者,需要注重自我修養(yǎng)和形象塑造。他們應(yīng)該保持良好的儀表儀態(tài),穿戴整潔干凈的工作服,嚴(yán)格按照要求佩戴工作證件。通過(guò)良好的形象塑造和自我修養(yǎng),能夠給旅客留下良好的印象,提升安檢工作的專(zhuān)業(yè)度。
總之,安檢員的服務(wù)禮儀規(guī)范是提高服務(wù)質(zhì)量、維護(hù)公共安全的重要保障。安檢員在工作中要注意自身形象,注重與旅客的溝通交流,并保持專(zhuān)業(yè)態(tài)度和良好的工作流程。只有這樣,才能讓旅客感受到舒心的服務(wù),確保公眾的出行安全順暢。
之前看了Mahout官方示例 20news 的調(diào)用實(shí)現(xiàn);于是想根據(jù)示例的流程實(shí)現(xiàn)其他例子。網(wǎng)上看到了一個(gè)關(guān)于天氣適不適合打羽毛球的例子。
訓(xùn)練數(shù)據(jù):
Day Outlook Temperature Humidity Wind PlayTennis
D1 Sunny Hot High Weak No
D2 Sunny Hot High Strong No
D3 Overcast Hot High Weak Yes
D4 Rain Mild High Weak Yes
D5 Rain Cool Normal Weak Yes
D6 Rain Cool Normal Strong No
D7 Overcast Cool Normal Strong Yes
D8 Sunny Mild High Weak No
D9 Sunny Cool Normal Weak Yes
D10 Rain Mild Normal Weak Yes
D11 Sunny Mild Normal Strong Yes
D12 Overcast Mild High Strong Yes
D13 Overcast Hot Normal Weak Yes
D14 Rain Mild High Strong No
檢測(cè)數(shù)據(jù):
sunny,hot,high,weak
結(jié)果:
Yes=》 0.007039
No=》 0.027418
于是使用Java代碼調(diào)用Mahout的工具類(lèi)實(shí)現(xiàn)分類(lèi)。
基本思想:
1. 構(gòu)造分類(lèi)數(shù)據(jù)。
2. 使用Mahout工具類(lèi)進(jìn)行訓(xùn)練,得到訓(xùn)練模型。
3。將要檢測(cè)數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。
4. 分類(lèi)器對(duì)vector數(shù)據(jù)進(jìn)行分類(lèi)。
接下來(lái)貼下我的代碼實(shí)現(xiàn)=》
1. 構(gòu)造分類(lèi)數(shù)據(jù):
在hdfs主要?jiǎng)?chuàng)建一個(gè)文件夾路徑 /zhoujainfeng/playtennis/input 并將分類(lèi)文件夾 no 和 yes 的數(shù)據(jù)傳到hdfs上面。
數(shù)據(jù)文件格式,如D1文件內(nèi)容: Sunny Hot High Weak
2. 使用Mahout工具類(lèi)進(jìn)行訓(xùn)練,得到訓(xùn)練模型。
3。將要檢測(cè)數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。
4. 分類(lèi)器對(duì)vector數(shù)據(jù)進(jìn)行分類(lèi)。
這三步,代碼我就一次全貼出來(lái);主要是兩個(gè)類(lèi) PlayTennis1 和 BayesCheckData = =》
package myTesting.bayes;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.ToolRunner;
import org.apache.mahout.classifier.naivebayes.training.TrainNaiveBayesJob;
import org.apache.mahout.text.SequenceFilesFromDirectory;
import org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles;
public class PlayTennis1 {
private static final String WORK_DIR = "hdfs://192.168.9.72:9000/zhoujianfeng/playtennis";
/*
* 測(cè)試代碼
*/
public static void main(String[] args) {
//將訓(xùn)練數(shù)據(jù)轉(zhuǎn)換成 vector數(shù)據(jù)
makeTrainVector();
//產(chǎn)生訓(xùn)練模型
makeModel(false);
//測(cè)試檢測(cè)數(shù)據(jù)
BayesCheckData.printResult();
}
public static void makeCheckVector(){
//將測(cè)試數(shù)據(jù)轉(zhuǎn)換成序列化文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"testinput";
String output = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();
String[] params = new String[]{"-i",input,"-o",output,"-ow"};
ToolRunner.run(sffd, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件序列化失敗!");
System.exit(1);
}
//將序列化文件轉(zhuǎn)換成向量文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";
String output = WORK_DIR+Path.SEPARATOR+"tennis-test-vectors";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();
String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};
ToolRunner.run(svfsf, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("序列化文件轉(zhuǎn)換成向量失敗!");
System.out.println(2);
}
}
public static void makeTrainVector(){
//將測(cè)試數(shù)據(jù)轉(zhuǎn)換成序列化文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"input";
String output = WORK_DIR+Path.SEPARATOR+"tennis-seq";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();
String[] params = new String[]{"-i",input,"-o",output,"-ow"};
ToolRunner.run(sffd, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件序列化失敗!");
System.exit(1);
}
//將序列化文件轉(zhuǎn)換成向量文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-seq";
String output = WORK_DIR+Path.SEPARATOR+"tennis-vectors";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();
String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};
ToolRunner.run(svfsf, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("序列化文件轉(zhuǎn)換成向量失敗!");
System.out.println(2);
}
}
public static void makeModel(boolean completelyNB){
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-vectors"+Path.SEPARATOR+"tfidf-vectors";
String model = WORK_DIR+Path.SEPARATOR+"model";
String labelindex = WORK_DIR+Path.SEPARATOR+"labelindex";
Path in = new Path(input);
Path out = new Path(model);
Path label = new Path(labelindex);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
if(fs.exists(label)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(label, true);
}
TrainNaiveBayesJob tnbj = new TrainNaiveBayesJob();
String[] params =null;
if(completelyNB){
params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow","-c"};
}else{
params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow"};
}
ToolRunner.run(tnbj, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("生成訓(xùn)練模型失敗!");
System.exit(3);
}
}
}
package myTesting.bayes;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.PathFilter;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.mahout.classifier.naivebayes.BayesUtils;
import org.apache.mahout.classifier.naivebayes.NaiveBayesModel;
import org.apache.mahout.classifier.naivebayes.StandardNaiveBayesClassifier;
import org.apache.mahout.common.Pair;
import org.apache.mahout.common.iterator.sequencefile.PathType;
import org.apache.mahout.common.iterator.sequencefile.SequenceFileDirIterable;
import org.apache.mahout.math.RandomAccessSparseVector;
import org.apache.mahout.math.Vector;
import org.apache.mahout.math.Vector.Element;
import org.apache.mahout.vectorizer.TFIDF;
import com.google.common.collect.ConcurrentHashMultiset;
import com.google.common.collect.Multiset;
public class BayesCheckData {
private static StandardNaiveBayesClassifier classifier;
private static Map<String, Integer> dictionary;
private static Map<Integer, Long> documentFrequency;
private static Map<Integer, String> labelIndex;
public void init(Configuration conf){
try {
String modelPath = "/zhoujianfeng/playtennis/model";
String dictionaryPath = "/zhoujianfeng/playtennis/tennis-vectors/dictionary.file-0";
String documentFrequencyPath = "/zhoujianfeng/playtennis/tennis-vectors/df-count";
String labelIndexPath = "/zhoujianfeng/playtennis/labelindex";
dictionary = readDictionnary(conf, new Path(dictionaryPath));
documentFrequency = readDocumentFrequency(conf, new Path(documentFrequencyPath));
labelIndex = BayesUtils.readLabelIndex(conf, new Path(labelIndexPath));
NaiveBayesModel model = NaiveBayesModel.materialize(new Path(modelPath), conf);
classifier = new StandardNaiveBayesClassifier(model);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("檢測(cè)數(shù)據(jù)構(gòu)造成vectors初始化時(shí)報(bào)錯(cuò)。。。。");
System.exit(4);
}
}
/**
* 加載字典文件,Key: TermValue; Value:TermID
* @param conf
* @param dictionnaryDir
* @return
*/
private static Map<String, Integer> readDictionnary(Configuration conf, Path dictionnaryDir) {
Map<String, Integer> dictionnary = new HashMap<String, Integer>();
PathFilter filter = new PathFilter() {
@Override
public boolean accept(Path path) {
String name = path.getName();
return name.startsWith("dictionary.file");
}
};
for (Pair<Text, IntWritable> pair : new SequenceFileDirIterable<Text, IntWritable>(dictionnaryDir, PathType.LIST, filter, conf)) {
dictionnary.put(pair.getFirst().toString(), pair.getSecond().get());
}
return dictionnary;
}
/**
* 加載df-count目錄下TermDoc頻率文件,Key: TermID; Value:DocFreq
* @param conf
* @param dictionnaryDir
* @return
*/
private static Map<Integer, Long> readDocumentFrequency(Configuration conf, Path documentFrequencyDir) {
Map<Integer, Long> documentFrequency = new HashMap<Integer, Long>();
PathFilter filter = new PathFilter() {
@Override
public boolean accept(Path path) {
return path.getName().startsWith("part-r");
}
};
for (Pair<IntWritable, LongWritable> pair : new SequenceFileDirIterable<IntWritable, LongWritable>(documentFrequencyDir, PathType.LIST, filter, conf)) {
documentFrequency.put(pair.getFirst().get(), pair.getSecond().get());
}
return documentFrequency;
}
public static String getCheckResult(){
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String classify = "NaN";
BayesCheckData cdv = new BayesCheckData();
cdv.init(conf);
System.out.println("init done...............");
Vector vector = new RandomAccessSparseVector(10000);
TFIDF tfidf = new TFIDF();
//sunny,hot,high,weak
Multiset<String> words = ConcurrentHashMultiset.create();
words.add("sunny",1);
words.add("hot",1);
words.add("high",1);
words.add("weak",1);
int documentCount = documentFrequency.get(-1).intValue(); // key=-1時(shí)表示總文檔數(shù)
for (Multiset.Entry<String> entry : words.entrySet()) {
String word = entry.getElement();
int count = entry.getCount();
Integer wordId = dictionary.get(word); // 需要從dictionary.file-0文件(tf-vector)下得到wordID,
if (StringUtils.isEmpty(wordId.toString())){
continue;
}
if (documentFrequency.get(wordId) == null){
continue;
}
Long freq = documentFrequency.get(wordId);
double tfIdfValue = tfidf.calculate(count, freq.intValue(), 1, documentCount);
vector.setQuick(wordId, tfIdfValue);
}
// 利用貝葉斯算法開(kāi)始分類(lèi),并提取得分最好的分類(lèi)label
Vector resultVector = classifier.classifyFull(vector);
double bestScore = -Double.MAX_VALUE;
int bestCategoryId = -1;
for(Element element: resultVector.all()) {
int categoryId = element.index();
double score = element.get();
System.out.println("categoryId:"+categoryId+" score:"+score);
if (score > bestScore) {
bestScore = score;
bestCategoryId = categoryId;
}
}
classify = labelIndex.get(bestCategoryId)+"(categoryId="+bestCategoryId+")";
return classify;
}
public static void printResult(){
System.out.println("檢測(cè)所屬類(lèi)別是:"+getCheckResult());
}
}