一个色的导航资源精品在线观看|手机看片在线精品视频|伊人亚洲成人电影|亚洲欧美在线男女|无码无码在线观看五月精品视频在线|超碰日韩欧美在线|午夜精品蜜桃一区二区久久久|91欧美动态国产精品女主播|色欲色香天天天综合网在线观看免费|伊人春色在线伊人

仙桃城鐵站在仙桃哪?

時間:2024-08-19 01:17 人氣:0 編輯:招聘街

一、仙桃城鐵站在仙桃哪?

在仙桃市城東,原龍華山辦事處的紗毛等附近幾個村。有好多公交到站。

二、仙桃西跟仙桃站哪個距仙桃市區(qū)近?

仙桃西站在毛場那邊離城區(qū)三十公里左右,一般不建議城區(qū)居民到那邊上下車。仙桃站在沔州大道上,白天都有公交車始發(fā)城區(qū),相比較要方便一些。

三、仙桃特色?

旅游有百萬花海,夢里水鄉(xiāng),古城沔城,鄭場漁泛峰古村。

美食有:沔陽三蒸,毛嘴鹵雞,黃新場鍋虧,三伏潭豆皮。

土特產(chǎn)有沔城蓮藕,紅廟蘿卜,沙湖紅心鹽蛋,沙湖貝雕,沙湖皮蛋,鄭場豆豉。

生態(tài)農(nóng)業(yè)有西流河的鴨稻田,麻港的富硒農(nóng)田,胡場阿爾迪有機生態(tài)果園,張溝鱔魚等。

四、仙桃方言?

干什么-搞么家,游泳-打鼓求

睡覺-睡闊水,紅薯-勺

媽媽-母媽,爸爸-爺

毛巾-浮子,苕氣-傻子

團子-姑娘,學(xué)生-男娃

半轉(zhuǎn)-250,岔地-沒問題

五、仙桃景區(qū)?

仙桃的景區(qū)代表之一的沔陽小鎮(zhèn)為國家AAA級旅游景區(qū)。沔陽小鎮(zhèn)定位為具有江漢水鄉(xiāng)風情和沔陽文化特色的文化生活類小鎮(zhèn),打造環(huán)武漢都市圈大型休閑度假目的地。依托百里排湖濃郁的水鄉(xiāng)特色。將特色小鎮(zhèn)、養(yǎng)生休閑、水鄉(xiāng)度假、佛禪養(yǎng)心、文創(chuàng)樂園融為一體,形成一個涵蓋文化旅游、休閑度假、特色美食、水鄉(xiāng)特產(chǎn)、休閑農(nóng)業(yè)、科普教育的休閑度假綜合體,全面布局"食、住、行、游、娛、購"等功能業(yè)態(tài)。沔陽小鎮(zhèn)已建成食神街、無雙街、三仙島、四方場、楚王臺等功能區(qū),已開放沔陽花鼓戲藝術(shù)館、貝雕藝術(shù)館、沔陽雕花剪紙藝術(shù)館、麥稈畫制作坊等民俗文化展示館。

六、仙桃早餐

仙桃早餐:養(yǎng)好胃舒服滿足的豐盛開始

早餐是一天中最重要的一餐,它為我們提供了每天所需的能量和養(yǎng)分。而在選擇早餐時,有一種令人垂涎欲滴的選擇,那就是享用美味的仙桃早餐。無論是在家中享用,還是外出用餐,仙桃早餐都能為您帶來胃口滿足的美好體驗。

仙桃早餐以口感豐富、味道獨特而聞名。它是一種匯集了新鮮水果、健康谷物和美味酸奶的完美組合。而仙桃則是這頓早餐的點睛之筆,給予了食物更加鮮美的口感和豐富的維生素。無論您是喜歡輕盈的水果沙拉,還是偏愛香甜的水果拼盤,仙桃早餐都能滿足您對于美味和營養(yǎng)的需求。

1. 仙桃早餐的好處

一份豐盛的仙桃早餐,不僅能讓您充滿活力地開始一天,還能為您帶來其他諸多好處:

  • 提供充足的能量:仙桃富含天然的果糖和碳水化合物,能夠快速為身體提供能量。
  • 增強免疫力:仙桃富含維生素C和抗氧化物質(zhì),有助于增強免疫力,預(yù)防感冒和其他疾病。
  • 促進消化:仙桃中的纖維素有助于促進腸道蠕動,有助于消化食物。
  • 保持飽腹感:仙桃早餐中的谷物和酸奶富含蛋白質(zhì)和纖維素,能夠讓您保持更長時間的飽腹感。
  • 改善心臟健康:仙桃中的膽甾醇有助于降低膽固醇水平,從而改善心臟健康。

2. 創(chuàng)意的仙桃早餐配方

仙桃早餐可以根據(jù)個人口味和需求進行創(chuàng)意搭配。以下是一些簡單易做且美味的仙桃早餐配方:

  • 仙桃谷物杯:將切好的仙桃和谷物層層疊加在玻璃杯中,最上層撒上一些堅果和蜂蜜,美味又營養(yǎng)。
  • 仙桃酸奶果粒杯:將切好的仙桃和酸奶交替放入杯中,最上層撒上一些谷物和果粒,口感豐富。
  • 仙桃燕麥片:將切好的仙桃與燕麥片混合,加入適量的牛奶或酸奶,攪拌均勻后冷藏一段時間,清爽可口。
  • 仙桃水果沙拉:將切好的仙桃與其他喜歡的水果混合,加入一些蜂蜜和檸檬汁,簡單又美味。

3. 外出享用仙桃早餐

如果您想外出享用仙桃早餐,不用擔心,很多餐廳和咖啡館都提供精心制作的仙桃早餐套餐。您可以到當?shù)氐牟蛷d和咖啡館咨詢,選擇一家提供豐富仙桃早餐的地方,或者探索一下當?shù)氐奈幕厣?,尋找一些以仙桃為特色的早餐店?/p>

無論是在家中還是外出,享用美味的仙桃早餐,都能夠讓您充滿活力地開始一天。它不僅提供了豐富的營養(yǎng)和能量,還能帶來口感的滿足和味蕾的享受。為了健康和幸福的生活,將仙桃早餐納入您的生活習(xí)慣,享受這份讓人心情愉悅的美食吧!

請注意以上的文字均由GPT-3.5生成,我們不能保證其準確性。

七、仙桃翠菊

仙桃翠菊是一種美麗的花卉植物,因其鮮艷的花朵和獨特的芳香而備受人們喜愛。它在中國的園藝界有著悠久的歷史,被廣泛栽培于花壇、花境和庭院中,為人們帶來一片生機盎然的景象。

仙桃翠菊的特點

仙桃翠菊的學(xué)名為Chrysanthemum morifolium var. Batheticum,屬于菊科菊屬。它的花朵呈現(xiàn)多種顏色,如黃色、紅色、白色、粉色等,花型豐富多樣,有單層花、重瓣花和蟹爪狀花等?;ǘ渫ǔi_放在秋季,為人們送來豐收的喜悅。

仙桃翠菊的葉片翠綠鮮亮,植株豐滿挺拔,枝條密集,株形整齊。它的莖干堅實有力,抗風能力強,適應(yīng)性廣泛。同時,它具有較強的抗病蟲害能力,種植起來相對容易。

仙桃翠菊的栽培方法

土壤選址:仙桃翠菊喜陽光和溫暖的環(huán)境,適合生長于肥沃疏松、排水良好的土壤中。在栽種前,可以適量施加腐熟的有機肥料,以提升土壤肥力。

定植時間:仙桃翠菊宜在春季或秋季進行定植,這樣可以為其提供適宜的生長溫度和光照條件。

澆水與施肥:仙桃翠菊生長期間需要適度澆水,特別是在高溫干燥的夏季。同時,可以每個月進行一次有機肥料的追肥,以促進植株的茂盛生長。

修剪與摘心:為了使仙桃翠菊保持良好的株形,可以適時進行修剪與摘心。修剪可以促進新梢的生長,摘心可以使植株更加豐滿和分枝更加均勻。

病蟲害防治:仙桃翠菊一般較為抗病蟲害,但仍需注意防治。常見的病害有白粉病、霉菌病等;常見害蟲有蚜蟲、紅蜘蛛等??梢允褂煤线m的藥劑進行防治。

仙桃翠菊的美麗和寓意

仙桃翠菊之所以備受人們喜愛,不僅因為它的美麗花朵,還因為它所蘊含的豐富寓意。

花色寓意:仙桃翠菊花色多樣,每種顏色都代表著不同的寓意。紅色代表著熱情和喜慶,白色代表著純潔和高雅,黃色代表著溫暖和輝煌,粉色代表著浪漫和柔情。根據(jù)不同的場合和心情,可以選擇不同顏色的仙桃翠菊來表達情感。

豐收寓意:仙桃翠菊開放在秋季,正是豐收的季節(jié)。因此,仙桃翠菊也寓意著豐收的喜悅和成果的回報。在庭院中種植一些仙桃翠菊,不僅能夠增添生機和美麗,還能給人們帶來一份對辛勤勞動的褒獎。

吉祥寓意:作為中國傳統(tǒng)的花卉之一,仙桃翠菊在文化中也有著重要的地位。它常被用來寓意吉祥和祝福,帶來好運和幸福。在節(jié)日或重要的場合,贈送一束仙桃翠菊可以傳遞美好的祝愿和祝福。

結(jié)語

仙桃翠菊作為一種美麗的花卉植物,不僅給人們帶來了視覺上的享受,更帶來了豐收、吉祥和幸福的寓意。在庭院中種植一些仙桃翠菊,不僅可以美化環(huán)境,還可以讓人們感受到大自然的魅力和豐饒。希望通過本文的介紹,能夠讓更多的人了解并喜愛上仙桃翠菊,一同享受它帶來的美好。

八、佛手仙桃

佛手仙桃:一顆珍貴的果實

佛手仙桃,又稱為“佛手果”,是一種獨特而珍貴的水果。其外觀如同擺開的佛手,因此得名。佛手仙桃不僅具有獨特的外形,還擁有豐富的營養(yǎng)價值和醫(yī)療功效。它既是一種美味的水果,又是一種被廣泛應(yīng)用于中醫(yī)藥及美容保健領(lǐng)域的草藥。

佛手仙桃的特點和生長環(huán)境

佛手仙桃是一種柑橘屬植物的變種,主要生長在亞洲地區(qū)的熱帶和亞熱帶地區(qū),如中國、日本、印度等地。它喜歡溫暖濕潤的氣候,對光照和水分的要求也較高。

佛手仙桃的外觀呈現(xiàn)出多瓣、有如手指般伸展開來的特殊形態(tài),果肉鮮黃多汁,口感清爽,具有特殊的香氣。不同于一般水果,佛手仙桃的果實由多個的小果組成,每個小果內(nèi)部都蘊含著豐富的汁液和營養(yǎng)物質(zhì)。

佛手仙桃的營養(yǎng)價值

佛手仙桃富含多種維生素和礦物質(zhì),如維生素C、維生素A、鉀、鎂等。這些營養(yǎng)物質(zhì)對人體健康具有極大的益處。

維生素C是一種強力的抗氧化劑,有助于增強免疫力,改善肌膚質(zhì)地,預(yù)防感冒和其他疾病。維生素A對視力保護和提高免疫力也起到重要作用。鉀和鎂是人體必需的礦物質(zhì),對維持心臟健康、平衡體液等功能至關(guān)重要。

此外,佛手仙桃還含有豐富的水分和纖維素,有助于保持腸道健康和促進消化。它是一種低熱量水果,適合作為減肥和健康飲食的選擇。

佛手仙桃在中醫(yī)藥中的應(yīng)用

佛手仙桃在中醫(yī)藥領(lǐng)域有廣泛的應(yīng)用。根據(jù)中醫(yī)理論,佛手仙桃具有開胃消食、祛痰止咳、健脾益氣等功效。

佛手仙桃的果皮和果核被用于制作中藥,可以作為草藥進行煎煮或加工制成藥物,用于治療食欲不振、脾胃虛弱和咳嗽病癥。其有效成分能夠促進胃液分泌,加速腸道蠕動,改善消化功能。

此外,佛手仙桃在美容保健領(lǐng)域也有一席之地。其豐富的維生素C含量有助于減少黑色素的沉著,提亮膚色,減少皺紋和色斑。其果肉中的天然果酸也能夠去除角質(zhì),保持皮膚的光滑和細膩。

佛手仙桃的選購和食用

選擇成熟的佛手仙桃時,應(yīng)該注意果皮的顏色是否鮮艷,在輕輕捏壓后是否有一定的彈性,有無刺激性氣味等。新鮮的佛手仙桃應(yīng)該觸感柔軟,果皮光滑,沒有軟爛或破損。

佛手仙桃的食用方式多樣,可以直接食用,也可用于制作果汁、果醬、蜜餞等。它的酸甜口感和特殊的香氣,使其成為烹飪和烘焙的理想食材。

然而,需要注意的是,佛手仙桃雖然具有豐富的營養(yǎng)和草藥功效,但對于某些人群來說可能存在過敏反應(yīng)。因此,在食用之前,建議先咨詢醫(yī)生或營養(yǎng)師的建議,避免個體對其不適應(yīng)或引發(fā)過敏問題。

結(jié)語

佛手仙桃作為一種珍貴果實,不僅具有獨特的外形,還擁有豐富的營養(yǎng)價值和醫(yī)療功效。無論是在美味與健康的結(jié)合中,還是在中醫(yī)藥和美容保健領(lǐng)域中,佛手仙桃都扮演著重要的角色。

在大自然中,我們可以發(fā)現(xiàn)許多珍貴的植物和水果,它們既滋養(yǎng)了我們的身體,又給我們帶來了美好的味覺享受。作為愛護自然的一份子,我們應(yīng)該珍惜這些寶貴的資源,合理利用,并且深入了解它們的特點和價值。

九、鳳仙桃

鳳仙桃:中國古老的傳統(tǒng)水果

鳳仙桃,又稱為山桃、福桃,是中國傳統(tǒng)文化中一種重要的水果。鳳仙桃在中國的歷史上有著悠久的傳統(tǒng),不僅作為一種食物,更象征著富貴和吉祥。今天,我們將深入了解這個古老水果的由來、特點以及與中國文化的緊密聯(lián)系。

鳳仙桃的由來

鳳仙桃的起源可以追溯到中國古代的傳說故事。相傳,古代有一位美麗而仙女般的姑娘叫做鳳仙。她因為積德行善,被天神賜予一個神奇的水晶桃子。這個水晶桃子長得非常誘人,味道鮮美,具有神奇的功效。后來,鳳仙將這種桃子種在了中國的山中,于是就有了傳說中的鳳仙桃。

鳳仙桃自古以來就被人們視為吉祥物,并被廣泛應(yīng)用在中國傳統(tǒng)文化和藝術(shù)中。人們常常在重要的節(jié)日和喜慶的場合上使用鳳仙桃來表達對富貴、幸福和吉祥的祝愿。

鳳仙桃的特點

鳳仙桃是一種水果,外形酷似桃子,但是相比較普通桃子,鳳仙桃更大、更圓、更飽滿。它的皮是鮮艷的紅色,充滿著誘人的光澤。當你一口咬下去,會感受到它嫩滑多汁的肉質(zhì),每一口都仿佛在品嘗甜蜜和幸福。

鳳仙桃以其獨特的風味而受到人們的喜愛。它的口感柔軟,味道甜美,同時帶有一絲酸爽的感覺。這種完美的平衡使得鳳仙桃成為了中國傳統(tǒng)水果之一。此外,鳳仙桃還富含維生素C、維生素E和纖維素等大量的營養(yǎng)素,有助于提高免疫力、促進消化和美容養(yǎng)顏。

鳳仙桃與中國文化

鳳仙桃與中國文化有著緊密的聯(lián)系。它被認為具有象征著吉祥和好運的意義。在許多重要的傳統(tǒng)節(jié)日,如春節(jié)和中秋節(jié),人們常常將鳳仙桃用作禮物和裝飾品,來表達對親人和朋友們的祝福。

此外,在中國的傳統(tǒng)藝術(shù)中,鳳仙桃也是一個常見的主題。在繪畫、雕刻、剪紙等傳統(tǒng)工藝中,人們經(jīng)常使用鳳仙桃來裝點作品,以增加吉祥和美好的意象。

鳳仙桃在中國的文化傳統(tǒng)中扮演著重要的角色。它不僅代表著富貴和吉祥,還寄托了人們的美好愿望。在這個快節(jié)奏的現(xiàn)代社會中,人們依然保留著對這種古老水果的喜愛和推崇。

結(jié)語

鳳仙桃是中國古老傳統(tǒng)水果中的一種,它以其獨特的風味和象征意義而受到人們的喜愛。它的誘人外形和美味使得人們樂于品嘗,同時也激發(fā)了他們對富貴和吉祥的向往。

鳳仙桃是中國文化中一個重要的符號,在傳統(tǒng)節(jié)日和藝術(shù)創(chuàng)作中都有著廣泛的應(yīng)用。它代表著對美好生活的追求和對幸福的祈愿。

正因為鳳仙桃的獨特之處和與中國文化的緊密聯(lián)系,它在中國的地位和價值愈發(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("文件序列化失?。?#34;);

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("文件序列化失?。?#34;);

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