城市建委與建設(shè)局實(shí)際上就是承擔(dān)同樣的管理職能、屬于同一類性質(zhì)的一個(gè)政府機(jī)構(gòu),只不過是由于所在地方的級(jí)別不同,導(dǎo)致機(jī)構(gòu)的名稱不一樣而已。城市建委的全稱為住房和城鄉(xiāng)建設(shè)委員會(huì),規(guī)范簡(jiǎn)稱是叫做“住建委”,一般設(shè)在副省級(jí)市和地級(jí)市,是所在地方市政府的工作部門之一,而建設(shè)局的全稱為住房和城鄉(xiāng)建設(shè)局,規(guī)范簡(jiǎn)稱是叫做“住建局”,一般設(shè)在縣、縣級(jí)市、副省級(jí)市和地級(jí)市的市轄區(qū),是所在縣(市、區(qū))政府的工作部門之一。城市建委(住建委)與建設(shè)局(住建局)都是負(fù)責(zé)當(dāng)?shù)亟ㄔO(shè)行政與房地產(chǎn)業(yè)管理的工作部門,主要職責(zé)包括:(一)貫徹執(zhí)行國(guó)家關(guān)于建設(shè)事業(yè)的法律法規(guī)和方針政策;研究制定工程建設(shè)、城市建設(shè)、建筑業(yè)、房地產(chǎn)業(yè)、市政公用事業(yè)和建筑工程勘察的發(fā)展規(guī)劃和相關(guān)的產(chǎn)業(yè)政策,并組織實(shí)施。(二)指導(dǎo)監(jiān)督有關(guān)工程設(shè)計(jì)、施工的招投標(biāo)活動(dòng),指導(dǎo)與規(guī)范設(shè)計(jì)市場(chǎng)、建筑市場(chǎng);負(fù)責(zé)工程勘察設(shè)計(jì)和建筑安裝的行業(yè)管理和資質(zhì)管理;管理工程質(zhì)量監(jiān)督和監(jiān)理工作;負(fù)責(zé)建設(shè)工程竣工驗(yàn)收備案、工程造價(jià)管理、質(zhì)量等級(jí)核定及工程咨詢工作;指導(dǎo)建設(shè)工程安全生產(chǎn),組織或會(huì)同有關(guān)部門查處建設(shè)工程重大事故。(三)負(fù)責(zé)編制并組織實(shí)施中心城區(qū)市政公用設(shè)施建設(shè)和維護(hù)規(guī)劃;指導(dǎo)管理全市供水、供氣、市政設(shè)施、園林綠化工作;綜合管理城市給水排水、燈光夜景、路燈設(shè)施。(四)負(fù)責(zé)房地產(chǎn)行業(yè)管理,規(guī)范房地產(chǎn)市場(chǎng);組織開展城市配套建設(shè)綜合驗(yàn)收工作;負(fù)責(zé)住宅區(qū)物業(yè)管理;管理房產(chǎn)轉(zhuǎn)讓、抵押和租賃工作。(五)制定實(shí)施行業(yè)科技發(fā)展規(guī)劃、人才培養(yǎng)規(guī)劃;推廣應(yīng)用新技術(shù)、新工藝和新材料;管理建設(shè)行業(yè)的對(duì)外經(jīng)濟(jì)技術(shù)合作工作,指導(dǎo)企業(yè)開拓國(guó)內(nèi)外建筑市場(chǎng)和房地產(chǎn)市場(chǎng)。(六)管理全市工業(yè)與民用建筑的抗震和人防工程建設(shè)工作;指導(dǎo)全市建制鎮(zhèn)、集鎮(zhèn)、村莊的建設(shè)工作;負(fù)責(zé)城市建設(shè)和工程建設(shè)的檔案管理。
建設(shè)局考試是對(duì)報(bào)考者在建筑領(lǐng)域相關(guān)知識(shí)與能力的考察,對(duì)于想要進(jìn)入建筑行業(yè)發(fā)展的人來說是一個(gè)重要的里程碑。通過建設(shè)局考試,不僅可以獲得相關(guān)專業(yè)資質(zhì)證書,還可以拓寬個(gè)人發(fā)展的道路。
在開始備考之前,首先要了解建設(shè)局考試的要求和內(nèi)容。建設(shè)局考試通常分為筆試和面試兩部分,筆試考察報(bào)考者對(duì)建筑法律法規(guī)、施工管理、工程質(zhì)量控制等方面的理論知識(shí),而面試則對(duì)報(bào)考者的實(shí)際操作能力和經(jīng)驗(yàn)進(jìn)行評(píng)估。
根據(jù)考試的時(shí)間和內(nèi)容,合理制定復(fù)習(xí)計(jì)劃是成功備考的關(guān)鍵。將整個(gè)復(fù)習(xí)過程劃分為若干個(gè)階段,每個(gè)階段都制定明確的學(xué)習(xí)目標(biāo)和計(jì)劃,逐步推進(jìn)復(fù)習(xí)進(jìn)度。同時(shí),合理安排時(shí)間,將每天的學(xué)習(xí)時(shí)間分解為若干個(gè)小段,以保持精力集中。
在備考過程中,選擇適合自己的學(xué)習(xí)資源非常重要。可以通過參加培訓(xùn)班、購(gòu)買教材、參考?xì)v年真題等方式獲取學(xué)習(xí)材料。此外,互聯(lián)網(wǎng)上也有很多建設(shè)局考試的相關(guān)資料和經(jīng)驗(yàn)分享,可以借鑒他人的學(xué)習(xí)方法和心得體會(huì)。
與他人一起學(xué)習(xí)和討論是相互促進(jìn)進(jìn)步的好方式。可以組建一個(gè)備考小組,與其他志同道合的考生一起交流學(xué)習(xí)心得、解答疑惑。在小組學(xué)習(xí)中,相互督促和鼓勵(lì),可以更好地保持學(xué)習(xí)動(dòng)力和效率。
通過大量的題目練習(xí),可以幫助熟悉考試格式和題型,并且鞏固知識(shí)點(diǎn)。可以根據(jù)每個(gè)階段的學(xué)習(xí)進(jìn)度,制定相應(yīng)的題目練習(xí)計(jì)劃。并且,要有意識(shí)地分析每個(gè)題目的解題思路和方法,找出自己的不足之處,以便提高解題能力。
備考期間,要注意保持身體健康和心理平衡。合理安排休息時(shí)間,避免過度疲勞。多參加一些放松身心的活動(dòng),如散步、運(yùn)動(dòng)、聚會(huì)等,以緩解學(xué)習(xí)的壓力和緊張情緒。
無論是考取建設(shè)局相關(guān)證書,還是提升自己在建筑領(lǐng)域的競(jìng)爭(zhēng)力,建設(shè)局考試都是一項(xiàng)重要的機(jī)會(huì)和挑???。通過科學(xué)合理的備考策略,以及積極認(rèn)真的學(xué)習(xí)態(tài)度,我們一定能夠成功攻克建設(shè)局考試,實(shí)現(xiàn)自己的目標(biāo)。
感謝您閱讀本文,希望通過這篇文章能夠?yàn)槟峁┯嘘P(guān)建設(shè)局考試的正式和實(shí)用信息,幫助您順利通過考試,順利進(jìn)入建筑行業(yè)發(fā)展。祝您考試順利!
由于所處地方不同,各個(gè)地方的住建局上班時(shí)間都有不同。有的市、區(qū)(縣)住建局按照當(dāng)?shù)貦C(jī)關(guān)單位上班作息時(shí)間要求,一般與當(dāng)?shù)氐臋C(jī)關(guān)單位作息一致,基本都是上午八點(diǎn)半或九點(diǎn)上班,中午十二點(diǎn)下班,下午六點(diǎn)下班;也有的住建局全年都是下午九點(diǎn)上班,下午六點(diǎn)下班。
建設(shè)局一般管理范圍為:城市規(guī)劃、城市管理、公用事業(yè)、園林綠化、房地產(chǎn)、建筑業(yè)等。國(guó)、省道上的行道樹一般屬交通、公路部門管理;城市(鎮(zhèn))街道上的行道樹屬于建設(shè)局管理。
建設(shè)局單位作為一個(gè)政府部門,在推動(dòng)城市建設(shè)、規(guī)劃和安全等方面扮演著重要的角色。其優(yōu)點(diǎn)在于穩(wěn)定的職業(yè)發(fā)展路徑、相對(duì)固定的工作時(shí)間和穩(wěn)定的薪資待遇等。
并且,建設(shè)局單位的崗位較為穩(wěn)定,工作內(nèi)容也與城市規(guī)劃、建設(shè)、環(huán)保等緊密相關(guān),具有一定的社會(huì)意義。
缺點(diǎn)則是工作比較繁瑣、規(guī)矩多而繁、內(nèi)部升遷機(jī)制不完善等,需要具備一定的耐心和毅力。總體而言,建設(shè)局單位作為一個(gè)穩(wěn)定的職業(yè)選擇,適合對(duì)事業(yè)穩(wěn)定性和社會(huì)責(zé)任感有較高要求的人群。
建設(shè)局屬縣直單位,人事財(cái)政都?xì)w縣政府管理。市建設(shè)局是市政府管理。
建設(shè)局:縣(或設(shè)區(qū))一級(jí)主管建設(shè)行業(yè)的行政部門。建設(shè)局與住建局是一個(gè)概念,只是稱呼不同而已,決定于當(dāng)?shù)卣庌k的機(jī)構(gòu)命名。
主要職能
(一)貫徹執(zhí)行國(guó)家和省關(guān)于建設(shè)事業(yè)的方針、政策和法律、法規(guī);研究擬定全市城市規(guī)劃、村鎮(zhèn)規(guī)劃、工程建設(shè)、城市建設(shè)、村鎮(zhèn)建設(shè)、建筑業(yè)、住宅與房地產(chǎn)業(yè)、勘察設(shè)計(jì)咨詢業(yè)、市政公用事業(yè)的政策、規(guī)章實(shí)施辦法以及相關(guān)的發(fā)展戰(zhàn)略、中長(zhǎng)期規(guī)劃、改革方案,并指導(dǎo)實(shí)施,進(jìn)行行業(yè)管理;指導(dǎo)全市建設(shè)行業(yè)行政監(jiān)察工作。
(二)指導(dǎo)全市城市規(guī)劃、村鎮(zhèn)規(guī)劃、城市勘察和市政工程測(cè)量工作;研究擬定加快全市城鎮(zhèn)化進(jìn)程的發(fā)展戰(zhàn)略;指導(dǎo)全市城市規(guī)劃、村鎮(zhèn)規(guī)劃的編制與實(shí)施;負(fù)責(zé)城市總體規(guī)劃的審查和市域城鎮(zhèn)體系的編制、報(bào)批工作;參與市土地利用總體規(guī)劃的審查;承擔(dān)對(duì)歷史文化名城相關(guān)的審查、報(bào)批和保護(hù)監(jiān)督工作;參與重點(diǎn)建設(shè)項(xiàng)目的選址,核發(fā)建設(shè)項(xiàng)目選址意見書;負(fù)責(zé)市區(qū)建設(shè)項(xiàng)目選址意見書、建設(shè)項(xiàng)目用地許可證及建設(shè)項(xiàng)目規(guī)劃許可證的核發(fā)工作;指導(dǎo)全市城市建設(shè)檔案管理工作。
(三)綜合管理全市建筑活動(dòng);規(guī)范建筑市場(chǎng);指導(dǎo)和監(jiān)督建筑市場(chǎng)準(zhǔn)入、工程招標(biāo)投標(biāo)、工程監(jiān)理、工程質(zhì)量與安全;擬定勘察設(shè)計(jì)、施工、建設(shè)監(jiān)理和相關(guān)社會(huì)中介組織管理法規(guī)實(shí)施辦法并監(jiān)督實(shí)施;管理全市裝飾(含室內(nèi)裝飾)行業(yè);組織協(xié)調(diào)建設(shè)企業(yè)參與市外工程承包的建筑勞務(wù)合作;負(fù)責(zé)核發(fā)市城市規(guī)劃區(qū)建設(shè)項(xiàng)目施工許可證。
(四)指導(dǎo)全市城市建設(shè)和村鎮(zhèn)建設(shè)工作;指導(dǎo)全市城市供水、燃?xì)狻⑹姓こ獭⒊鞘姓彰鳌⒊鞘袕V告及設(shè)施、城市公共客運(yùn)、園林、市容環(huán)境衛(wèi)生、城建監(jiān)察工作以及城鎮(zhèn)規(guī)劃區(qū)的綠化工作;負(fù)責(zé)全市名勝區(qū)及其規(guī)劃的審查報(bào)批和保護(hù)監(jiān)督工作;負(fù)責(zé)市城市規(guī)劃區(qū)供水、燃?xì)狻⑹姓こ碳霸O(shè)施、公共客運(yùn)、園林、城建監(jiān)察工作。
(五)指導(dǎo)全市住宅建設(shè)和城鎮(zhèn)住房制度改革工作,負(fù)責(zé)全市房地產(chǎn)業(yè)行業(yè)管理;規(guī)范房地產(chǎn)市場(chǎng);管理房產(chǎn)總量;指導(dǎo)城鎮(zhèn)土地使用權(quán)有償轉(zhuǎn)讓和開發(fā)利用工作;負(fù)責(zé)市城鎮(zhèn)住房制度改革實(shí)施方案和各項(xiàng)配套政策的擬定并監(jiān)督實(shí)施;指導(dǎo)住房公積金及其他房改資金的歸集、使用、管理;負(fù)責(zé)市城市規(guī)劃區(qū)范圍的房地產(chǎn)發(fā)證、交易等工作;指導(dǎo)全市城市房屋拆遷管理工作。
(六)負(fù)責(zé)全市建設(shè)工程的勘察、設(shè)計(jì)、咨詢行業(yè)管理,規(guī)范建設(shè)工程勘察、設(shè)計(jì)、咨詢市場(chǎng);指導(dǎo)建筑智能化工作;監(jiān)督管理城鎮(zhèn)及工業(yè)與民用建筑的抗震設(shè)計(jì),規(guī)范實(shí)施抗震設(shè)計(jì)和施工;指導(dǎo)城市地下空間的開發(fā)利用;負(fù)責(zé)一切工業(yè)建筑、民用建筑的工程造價(jià)、工程定額和費(fèi)用標(biāo)準(zhǔn)管理。
(七)制定全市建設(shè)行業(yè)科技發(fā)展規(guī)劃和技術(shù)經(jīng)濟(jì)政策;組織重大科研項(xiàng)目攻關(guān)和新技術(shù)、新產(chǎn)品的引進(jìn),制定行業(yè)教育發(fā)展規(guī)劃,指導(dǎo)行業(yè)教育培訓(xùn)工作;負(fù)責(zé)建設(shè)行業(yè)執(zhí)業(yè)資格管理。
(八)管理全市建設(shè)行業(yè)對(duì)外經(jīng)濟(jì)技術(shù)合作;指導(dǎo)建設(shè)企業(yè)開拓省外、國(guó)(境)外建筑市場(chǎng)和房地產(chǎn)市場(chǎng)。
(九)負(fù)責(zé)局機(jī)關(guān)和下屬單位的人事管理、勞動(dòng)工資、機(jī)構(gòu)編制管理工作;負(fù)責(zé)局機(jī)關(guān)和下屬單位的黨群、紀(jì)律檢查工作及工、青、婦、老干部工作。
(十)承辦市政府交辦的其他事項(xiàng)。
一考二調(diào)。 一考:去建設(shè)局,局機(jī)關(guān)是公務(wù)員編制,現(xiàn)在取消里面的事業(yè)的編制,建設(shè)局下屬單位是事業(yè)編制,但還管什么編制進(jìn)去都要考。 二調(diào):考入別的單位,然后找到門路,調(diào)入建設(shè)局。 如果你有門路,不去考公務(wù)員。可以先考個(gè)三支一扶(較容易),二年后,再調(diào)入建設(shè)局下屬事業(yè)單位。或報(bào)當(dāng)?shù)鼗鶎庸珓?wù)員,可以加分,錄取后,再調(diào)入建設(shè)局,此時(shí)是行政編制。
建設(shè)局屬于機(jī)關(guān)單位。是國(guó)家公務(wù)員性質(zhì)。由法定的上班時(shí)間。一般是。周一到周五工作日。是上午8:30上班,下午17:30下班。周六、周日和國(guó)家的法定節(jié)假日都會(huì)休息,不安排上班。如果需要去建設(shè)局辦事的話,那就是周一到周五工作日時(shí)間的上述時(shí)間段。
1.前來應(yīng)聘的人員必須要有中華人民共和國(guó)的國(guó)籍,必須要擁護(hù)中國(guó)共產(chǎn)黨的領(lǐng)導(dǎo),必須要遵守我國(guó)相關(guān)的法律,不能違法亂紀(jì),要有良好的道德品質(zhì),要擁有責(zé)任感和工作的熱情,必須要一心一意為老百姓辦事,不能徇私舞弊,不能索取賄賂。
2.具備良好的品行和符合工作要求的能力,擁有與工作崗位相匹配的工作技能等其他資格條件,因?yàn)榻ㄔO(shè)局的工作是指導(dǎo)全市建設(shè)行業(yè)的行政監(jiān)察工作,然后根據(jù)相應(yīng)的規(guī)定來修改和完善關(guān)于城市規(guī)劃,村鎮(zhèn)規(guī)劃,工程建設(shè),城市建設(shè),村鎮(zhèn)建設(shè)等等關(guān)于建設(shè)的發(fā)展戰(zhàn)略和改革方案。
3.應(yīng)聘者要具備正常履行工作職責(zé)所需要的文化程度和身體條件,有一個(gè)好的身體才能好的工作,如果沒有良好的身體狀況和身體條件,不能進(jìn)行高效率地完成工作,所以要有良好的身體條件,工作時(shí)要用到很多知識(shí),不同的文化程度有著不同的工作能力,要具備一定關(guān)于工作的文化知識(shí)。
之前看了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的工具類實(shí)現(xiàn)分類。
基本思想:
1. 構(gòu)造分類數(shù)據(jù)。
2. 使用Mahout工具類進(jìn)行訓(xùn)練,得到訓(xùn)練模型。
3。將要檢測(cè)數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。
4. 分類器對(duì)vector數(shù)據(jù)進(jìn)行分類。
接下來貼下我的代碼實(shí)現(xiàn)=》
1. 構(gòu)造分類數(shù)據(jù):
在hdfs主要?jiǎng)?chuàng)建一個(gè)文件夾路徑 /zhoujainfeng/playtennis/input 并將分類文件夾 no 和 yes 的數(shù)據(jù)傳到hdfs上面。
數(shù)據(jù)文件格式,如D1文件內(nèi)容: Sunny Hot High Weak
2. 使用Mahout工具類進(jìn)行訓(xùn)練,得到訓(xùn)練模型。
3。將要檢測(cè)數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。
4. 分類器對(duì)vector數(shù)據(jù)進(jìn)行分類。
這三步,代碼我就一次全貼出來;主要是兩個(gè)類 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);
}
// 利用貝葉斯算法開始分類,并提取得分最好的分類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è)所屬類別是:"+getCheckResult());
}
}