久久精品日韩无码|61伊人久久绿帽|最新国产浮力网站|亚州aV无码国产|明星一二三区av|超碰人人在线成人|澳门无码福利av

金彭T90一G山區(qū)版配置參數(shù)?

時間:2024-12-11 06:04 人氣:0 編輯:招聘街

一、金彭T90一G山區(qū)版配置參數(shù)?

金彭T90采用SUV造型,五門四座的承載式車身設(shè)計,底盤架設(shè)較高。車身下方的流線型凹槽,使整車顯得修長氣派,風(fēng)格自成一家。前臉黑底飾條中間鑲嵌著鋼琴烤漆工藝的高亮金屬logo,左右連接LED多邊形亮黑大燈,頗有未來科技風(fēng)的感覺。車頭兩側(cè)和下方的柵格口,又呈現(xiàn)出自然大方的視覺效果。

金彭T90的動力系統(tǒng),搭載的是3.5kw高效交流電機(其山區(qū)款最大功率是5.6kw),匹配雙驅(qū)智能DC轉(zhuǎn)換器,可以自由切換高低速,動力非常強勁。T90運用運動化底盤調(diào)校技術(shù),匹配轎車級配套制動器,制動靈敏度是普通制動器1.2倍,操控體驗與安全系數(shù)大幅度提升。輪胎配的是轎跑級五幅輪轂,黑白經(jīng)典套色,散熱性好。高性能鋁合金,滿足10153N力值的徑向滾壓沖擊,遠超同類別產(chǎn)品要求!

二、彭彭身高?

178cm

彭彭、原名彭昱暢、中國內(nèi)地男演員。1994年10月25日出生江西新余市,畢業(yè)于上海戲劇學(xué)院木偶表演系。

代表作品:奪冠、閃光少女、大象席地而坐

主要成就:2020年福布斯中國名人榜第67位

三、嶗山區(qū)沙子口彭家莊什么時候拆遷?

目前嶗山區(qū)主要還是針對中韓街道部分區(qū)域進行改造,不過按照青島十三五計劃的內(nèi)容,結(jié)合嶗山區(qū)新簽的幾個大項目,預(yù)計在5年內(nèi)將嶗山打造成旅游、文化、辦公為主的新嶗山,你可以搜索一下看看和沙子口有關(guān)的幾個新項目。而且鑒于政府以及開發(fā)商啟動、資金、工期等影響,沙子口的拆遷也將是逐步的進行,具體還得看嶗山區(qū)官網(wǎng)的公告吧

四、彭彭怎么組詞?

彭的拼音和詞語:拼音:【 péng】。組詞:彭尸、彭勃、彭祖、彭蜞、老彭、韓彭、大彭、三彭、彭郎、彭考、彭湃、彭亨、彭濞、容彭、黥彭、彭侯、彭鏗、彭月等。

彭彭【péng,péng】:盛多的樣子; 音樂人名。

彭涓【péng,juā】:彭祖和涓子的并稱。二人均為傳說中的長壽者。

彭澤【péng,zé】:1、澤名。即今鄱陽湖。在江西省北部。又名彭湖﹑彭蠡。 2、縣名。漢代始設(shè)。在今江西省北部。晉陶潛曾為彭澤令,因以"彭澤"借指陶潛。

彭蜞【péng,qí】:蟹的一種,體小少肉。

彭客【péng,kè】:新興的積極詞匯。

韓彭【hán,péng】:漢代名將淮陰侯韓信與建成侯彭越的并稱。

彭越【péng,yuè】:亦寫作'彭月'。 即彭蜞。

彭聃【péng,dān】:彭祖與老聃的并稱。傳說二人均極長壽。

彭窯【péng,yáo】:元代名匠彭均寶燒窯于霍州,制品仿北宋定窯﹐胎薄質(zhì)細,凈白尚素。當(dāng)時稱為'彭窯'。又稱'新定窯

五、彭石林

彭石林:優(yōu)秀的博主與作家

彭石林:優(yōu)秀的博主與作家

近年來,彭石林先生以其獨特的寫作風(fēng)格和豐富的知識深受讀者喜愛。他是一位多才多藝的博主、作家和評論家,他的博客和文章充滿了思想性、深度和創(chuàng)新。彭石林的文字不僅展現(xiàn)出他對文學(xué)、歷史和當(dāng)代社會問題的獨到見解,更能帶領(lǐng)讀者思考、啟發(fā)思想,并以娓娓道來的敘事將人們引入一個全新的視角。

個人背景

彭石林出生在一個教育世家,家庭的良好教育環(huán)境培養(yǎng)了他廣博的知識和文學(xué)才華。他在早期就展現(xiàn)出寫作的天賦,并通過自己的不斷努力,逐漸成為了一位備受矚目的作家。彭石林擁有文學(xué)學(xué)士學(xué)位和碩士學(xué)位,他的學(xué)術(shù)背景不僅豐富了他的寫作素材,更為他的文章增添了學(xué)者般的深度和權(quán)威性。

博客與作品

彭石林的博客是他與讀者分享觀點和知識的平臺,他通過博客內(nèi)容表達個人的見解和觀點,有時候會探討一些熱門話題或創(chuàng)意的故事。無論是文學(xué)評論,歷史解讀,還是對社會問題的探討,彭石林總是能給讀者帶來全新的啟示。他的文章富有獨創(chuàng)性,且經(jīng)常與時事緊密聯(lián)系,引起了廣泛的關(guān)注和贊譽。

彭石林的作品涵蓋了多個領(lǐng)域,他的小說作品《時光漩渦》以其獨特的敘事方式和深刻的內(nèi)涵贏得了廣大讀者的喜愛。這本小說以厚重的歷史背景為支撐,將現(xiàn)實與虛構(gòu)相結(jié)合,讓人們在欣賞故事的同時不斷思考。他的散文集《靈感散落的地方》被評論家譽為具有獨特魅力的經(jīng)典之作,彭石林通過富有哲思的文字展現(xiàn)了對生活的獨到感悟,讓讀者在其中找到共鳴。

影響力與社會貢獻

彭石林不僅在文學(xué)創(chuàng)作領(lǐng)域取得了巨大的成功,他也以自己的影響力和社會貢獻贏得了人們的尊重。他積極參與公益事業(yè),并通過自己的文章和演講,傳遞正能量和社會價值觀。彭石林的影響力不僅限于文壇,他的觀點和見解也常常在社交媒體上引起廣泛的關(guān)注和討論,對社會輿論起到了積極的引導(dǎo)作用。

彭石林的文章常常關(guān)注社會問題,呼吁人們關(guān)心弱勢群體、關(guān)注綠色環(huán)保、倡導(dǎo)和諧社會等,他深入淺出的寫作風(fēng)格讓人們?nèi)菀桌斫?,產(chǎn)生共鳴。通過他的文字,讀者可以看到一個熱愛生活、關(guān)心社會、追求進步的思想家的形象。彭石林的思想和觀點通過文字傳遞給讀者,引發(fā)了人們對于社會現(xiàn)象和個人價值的思考和反思。

未來展望

彭石林是一位極富潛力的作家和博主,他的寫作才華和廣博的知識為他的未來發(fā)展奠定了堅實的基礎(chǔ)。我們期待彭石林能夠繼續(xù)發(fā)表出更多富有創(chuàng)意和啟發(fā)性的文章和作品,以他獨特的視角和筆觸為讀者帶來新的思考。相信在他的努力下,彭石林會成為文壇上的一股強力推動力量,并對社會產(chǎn)生重要的影響。

六、金彭旗下品牌昆彭

金彭旗下品牌昆彭:開創(chuàng)時尚界新篇章

金彭旗下品牌昆彭:開創(chuàng)時尚界新篇章

時尚界一直是一個不斷創(chuàng)新和變化的領(lǐng)域,而金彭旗下品牌昆彭不僅在這個領(lǐng)域取得了突破性的成就,更是開創(chuàng)了一個全新的時尚篇章。旗下的各個系列產(chǎn)品引領(lǐng)著時尚潮流,賦予人們與眾不同的個性和風(fēng)格。

革新的設(shè)計理念

昆彭品牌以其獨特的設(shè)計理念而聞名,通過將傳統(tǒng)元素與現(xiàn)代風(fēng)格相融合,創(chuàng)造出一系列獨特而又時尚的產(chǎn)品。無論是服裝、飾品還是配件,昆彭都始終保持創(chuàng)新的步伐,不斷顛覆傳統(tǒng)的審美觀念。品牌的設(shè)計師團隊以前瞻性的眼光和卓越的技術(shù),將藝術(shù)與時尚完美結(jié)合,帶來了一種全新的時尚體驗。

多元化的產(chǎn)品線

昆彭品牌的產(chǎn)品線非常豐富多樣,涵蓋了服裝、鞋履、手表、眼鏡、皮具等多個領(lǐng)域。無論你是追求簡約風(fēng)格的時尚達人,還是喜歡個性張揚的潮流愛好者,昆彭都能滿足你的需求。各個系列產(chǎn)品都經(jīng)過精心的設(shè)計和制作,以提供高品質(zhì)和耐用性為目標(biāo),時刻關(guān)注著細節(jié)的完美。

引領(lǐng)時尚潮流

金彭旗下品牌昆彭一直致力于引領(lǐng)時尚潮流,通過與眾多國際頂尖設(shè)計師的合作,不斷推出獨具時尚感和藝術(shù)品質(zhì)的產(chǎn)品。無論是時裝秀還是廣告宣傳,昆彭都能給人們帶來震撼和驚喜。品牌以其獨特風(fēng)格和高端形象,在時尚界樹立起了嶄新的標(biāo)桿。

金彭文化的傳承

金彭旗下的昆彭品牌不僅是時尚界的領(lǐng)導(dǎo)者,更是傳承著金彭文化的使者。金彭一直秉承著卓越品質(zhì)和對細節(jié)的追求,將這些理念融入到昆彭品牌的每個產(chǎn)品中。昆彭所傳達的不僅是時尚和個性,更是對藝術(shù)和美的追求。這種獨特的文化基因使昆彭與眾不同,成為了時尚界的瑰寶。

未來的發(fā)展

展望未來,金彭旗下品牌昆彭將繼續(xù)以開拓創(chuàng)新的姿態(tài)發(fā)展,在設(shè)計和技術(shù)上不斷突破界限。品牌將繼續(xù)與更多頂尖設(shè)計師和藝術(shù)家合作,推出更多令人驚嘆的產(chǎn)品。同時,昆彭還將加強國際市場的開拓,向全球傳遞金彭文化的獨特魅力。

無論是時尚達人還是普通消費者,昆彭都能滿足你對時尚和個性的追求。選擇昆彭,選擇與眾不同,選擇開創(chuàng)時尚界新篇章!

相關(guān)標(biāo)簽: 金彭旗下品牌昆彭,時尚潮流,設(shè)計理念,產(chǎn)品線,創(chuàng)新發(fā)展

七、寶山區(qū)友誼路到彭浦新村做什么車?

線路1:從849路 (寶山醫(yī)院站)上車,坐20站至(聞喜路站)下車線路2:從159路 (盤古路友誼支路站)上車,坐22站至(三泉路臨汾路站)下車線路3:從地鐵3號線 (友誼路站)上車,坐8站至(江灣鎮(zhèn)站)下車,步行約5分鐘到換乘點 轉(zhuǎn)850路 (江灣鎮(zhèn)站)上車,坐6站至(共和新路站)下車

八、彭鳳仙

彭鳳仙:中國文學(xué)中一位引人注目的女作家

導(dǎo)言

彭鳳仙是中國文學(xué)界備受矚目的女作家之一。她以其深刻的洞察力和獨特的創(chuàng)作風(fēng)格,贏得了廣大讀者的喜愛和贊賞。本文將介紹彭鳳仙的生平和作品,探討她在中國文學(xué)史上的地位和影響。

生平

彭鳳仙于XXXX年出生在中國一個知識分子家庭。在她的成長過程中,她對文學(xué)產(chǎn)生了濃厚的興趣。她自幼喜歡閱讀,尤其是中國古代文學(xué)作品。這種深厚的文學(xué)底蘊成為了她后來成為一名作家的基石。

彭鳳仙在大學(xué)學(xué)習(xí)期間,選擇了文學(xué)專業(yè)。她在學(xué)校期間表現(xiàn)出色,經(jīng)常在文學(xué)社團中展示自己的才華。畢業(yè)后,彭鳳仙決定全職投身于寫作事業(yè)。她的第一部小說出版后,立即獲得了評論界的好評,奠定了她在文學(xué)圈的地位。

作品與風(fēng)格

彭鳳仙的作品涵蓋了廣泛的主題,包括愛情、心理、社會問題等。她以其細膩的描寫和深入的思考,將讀者帶入角色的內(nèi)心世界,讓人產(chǎn)生共鳴。

在彭鳳仙的小說中,她經(jīng)常通過生動的故事情節(jié)和豐富的人物形象,展現(xiàn)出不同社會群體的命運和心理變化。她對人性的探索和對社會現(xiàn)實的關(guān)注,使她的作品具有強烈的現(xiàn)實意義。

對中國文學(xué)的貢獻

彭鳳仙的作品不僅僅是文學(xué)作品,更是對中國社會的一種觀察和批判。她通過筆下的人物和故事,揭示了社會問題的根源和人們的命運。她的作品給人以啟示,引發(fā)人們對社會現(xiàn)狀的思考。

彭鳳仙的作品也對中國文學(xué)史產(chǎn)生了重要影響。她開創(chuàng)了一種新的文學(xué)風(fēng)格,將現(xiàn)實主義與浪漫主義相結(jié)合,創(chuàng)作出獨具一格的作品。她的獨特視角和才華,為中國文學(xué)注入了新的活力。

結(jié)論

彭鳳仙是中國文學(xué)界的一顆璀璨的明星。她以其出色的創(chuàng)作才華和對社會問題的關(guān)注,贏得了廣大讀者的贊賞和認(rèn)可。她的作品不僅具有文學(xué)價值,更具有社會意義。相信在未來的歲月里,彭鳳仙將繼續(xù)創(chuàng)作出更多令人期待的精彩作品。

九、彭假發(fā)

彭假發(fā):一位備受爭議的假發(fā)商家

在時尚界,假發(fā)一直是備受關(guān)注的話題之一。無論是用于造型變化或者美容需求,假發(fā)都成為許多人的選擇。然而,市場上假發(fā)的質(zhì)量良莠不齊,消費者常常需要面對各種選擇和挑戰(zhàn)。今天,我們聚焦于一位備受爭議的假發(fā)商家——彭假發(fā),探討其背后的故事和影響。

彭假發(fā):品牌背景

據(jù)了解,彭假發(fā)是一家專注于設(shè)計和銷售各類假發(fā)產(chǎn)品的品牌。成立于二十年前,該品牌在短時間內(nèi)就迅速嶄露頭角,吸引了大批消費者的關(guān)注。其以創(chuàng)新設(shè)計、優(yōu)質(zhì)材料和多樣化款式而聞名于行業(yè)內(nèi)外。

產(chǎn)品特點和市場定位

作為一家假發(fā)品牌,彭假發(fā)的產(chǎn)品特點在于注重細節(jié)和舒適度。無論是長發(fā)還是短發(fā),卷發(fā)還是直發(fā),該品牌的假發(fā)都能滿足消費者不同的需求。此外,彭假發(fā)還推出了智能假發(fā)系列,結(jié)合了科技與時尚的元素,備受年輕消費者青睞。

品質(zhì)保障與售后服務(wù)

在競爭激烈的假發(fā)市場,產(chǎn)品的品質(zhì)和售后服務(wù)顯得尤為重要。彭假發(fā)以嚴(yán)格的質(zhì)量控制和完善的售后保障體系著稱。無論是產(chǎn)品質(zhì)量問題還是售后需求,消費者都能得到及時有效的解決方案。

用戶評價和口碑

關(guān)于彭假發(fā)的口碑,各種褒貶不一。一些消費者贊揚其產(chǎn)品質(zhì)量和款式多樣性,認(rèn)為是物有所值;而另一些消費者卻抱怨售后服務(wù)不夠及時和產(chǎn)品質(zhì)量參差不齊。作為消費者,選擇一個值得信賴的品牌確實需要謹(jǐn)慎考慮。

未來展望與發(fā)展方向

作為一家年輕而充滿活力的假發(fā)品牌,彭假發(fā)將面臨更多的挑戰(zhàn)和機遇。未來,該品牌計劃進一步擴大產(chǎn)品線,并加強與消費者的溝通和互動。同時,彭假發(fā)將不斷提升產(chǎn)品質(zhì)量和服務(wù)水平,以贏得更多消費者的青睞。

綜上所述,彭假發(fā)作為一家備受爭議的假發(fā)商家,其產(chǎn)品質(zhì)量、市場定位和售后服務(wù)備受關(guān)注。消費者在選擇假發(fā)產(chǎn)品時,需謹(jǐn)慎考量各方面因素,并選擇適合自己的產(chǎn)品。希望彭假發(fā)在未來能夠不斷發(fā)展壯大,為消費者帶來更優(yōu)質(zhì)的假發(fā)體驗。

十、mahout面試題?

之前看了Mahout官方示例 20news 的調(diào)用實現(xiàn);于是想根據(jù)示例的流程實現(xiàn)其他例子。網(wǎng)上看到了一個關(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

檢測數(shù)據(jù):

sunny,hot,high,weak

結(jié)果:

Yes=》 0.007039

No=》 0.027418

于是使用Java代碼調(diào)用Mahout的工具類實現(xiàn)分類。

基本思想:

1. 構(gòu)造分類數(shù)據(jù)。

2. 使用Mahout工具類進行訓(xùn)練,得到訓(xùn)練模型。

3。將要檢測數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。

4. 分類器對vector數(shù)據(jù)進行分類。

接下來貼下我的代碼實現(xiàn)=》

1. 構(gòu)造分類數(shù)據(jù):

在hdfs主要創(chuàng)建一個文件夾路徑 /zhoujainfeng/playtennis/input 并將分類文件夾 no 和 yes 的數(shù)據(jù)傳到hdfs上面。

數(shù)據(jù)文件格式,如D1文件內(nèi)容: Sunny Hot High Weak

2. 使用Mahout工具類進行訓(xùn)練,得到訓(xùn)練模型。

3。將要檢測數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。

4. 分類器對vector數(shù)據(jù)進行分類。

這三步,代碼我就一次全貼出來;主要是兩個類 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";

/*

* 測試代碼

*/

public static void main(String[] args) {

//將訓(xùn)練數(shù)據(jù)轉(zhuǎn)換成 vector數(shù)據(jù)

makeTrainVector();

//產(chǎn)生訓(xùn)練模型

makeModel(false);

//測試檢測數(shù)據(jù)

BayesCheckData.printResult();

}

public static void makeCheckVector(){

//將測試數(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(){

//將測試數(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("檢測數(shù)據(jù)構(gòu)造成vectors初始化時報錯。。。。");

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ù)

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("檢測所屬類別是:"+getCheckResult());

}

}

相關(guān)資訊
熱門頻道

Copyright © 2024 招聘街 滇ICP備2024020316號-38