国内精品久久久久_亚洲区手机在线中文无码播放_国内精品久久久久影院一蜜桃_日韩内射激情视频在线播放免费

      我今天才發(fā)現(xiàn)好太太還有家電和廚衛(wèi),好太太有幾個品牌?

      時間:2024-12-25 10:28 人氣:0 編輯:招聘街

      一、我今天才發(fā)現(xiàn)好太太還有家電和廚衛(wèi),好太太有幾個品牌?

      好太太在市面上有著各式各樣的產(chǎn)品和行業(yè),有做家電的,有在做廚衛(wèi)的,但是好太太最早是專注于晾曬產(chǎn)品的,它家的晾衣機(jī)蠻好的,口 碑也不錯。

      二、好太太整體廚房

      廚房是家庭中最重要的房間之一,因為它是一個家庭的中心,是人們準(zhǔn)備美食的地方。一個好的廚房不僅應(yīng)該有一個完美的設(shè)計,還應(yīng)該提供高效率和高品質(zhì)。好太太整體廚房將為您提供所有這些品質(zhì)和更多。

      好太太整體廚房的優(yōu)勢

      好太太整體廚房是一個專業(yè)的廚房改建公司,致力于提供高效率和高品質(zhì)的廚房改建服務(wù)。以下是好太太整體廚房的一些優(yōu)勢:

      1: 個性化設(shè)計

      好太太整體廚房提供個性化的廚房設(shè)計方案,以滿足不同客戶的需求和預(yù)算。無論您想要一個現(xiàn)代化的廚房還是一個傳統(tǒng)的廚房,好太太整體廚房都將根據(jù)您的需求和喜好提供最佳的設(shè)計方案。

      2: 高品質(zhì)材料

      好太太整體廚房使用高品質(zhì)的材料來改建您的廚房。這些材料包括高檔的櫥柜、臺面和水槽等,堅固耐用,易于清潔和維護(hù)。

      3: 高效率

      好太太整體廚房的廚房改建服務(wù)非常高效。他們將在預(yù)定的時間內(nèi)完成工作,并確保所有工作都按時完成。他們還遵循高質(zhì)量和安全標(biāo)準(zhǔn),以確保您的廚房改建工作是一個完美的工作。

      4: 費(fèi)用透明

      好太太整體廚房提供透明的費(fèi)用結(jié)構(gòu),以保證客戶明確了解所需的預(yù)算。他們還提供免費(fèi)報價,以便您可以在決定之前了解整個過程的成本。

      好太太整體廚房的服務(wù)

      好太太整體廚房提供以下服務(wù):

      1: 廚房設(shè)計

      好太太整體廚房提供個性化的廚房設(shè)計方案,以滿足客戶的需求和預(yù)算。他們將根據(jù)客戶的需求和喜好提供最佳的設(shè)計方案。

      2: 廚房改建

      好太太整體廚房提供高品質(zhì)的廚房改建服務(wù)。他們使用高品質(zhì)的材料和專業(yè)的技術(shù)來改建您的廚房,以確保您的廚房具有高效率和高品質(zhì)。

      3: 廚房維修

      好太太整體廚房提供廚房維修服務(wù),以保持您的廚房在最佳狀態(tài)。他們可以修理櫥柜、臺面、水槽等,以確保您的廚房一直保持在最佳狀態(tài)。

      好太太整體廚房的客戶反饋

      好太太整體廚房已經(jīng)為許多客戶提供了高品質(zhì)的廚房改建服務(wù)。以下是一些客戶的反饋:

      “好太太整體廚房為我們提供了一個完美的廚房設(shè)計和改建方案。他們的高效率和高品質(zhì)服務(wù)讓我們非常滿意。”

      “我們非常喜歡好太太整體廚房提供的個性化設(shè)計方案。他們的專業(yè)技術(shù)和高品質(zhì)材料使我們的廚房變得更加美麗。”

      “好太太整體廚房的服務(wù)非常好。他們非常透明,讓我們明確了解整個過程的成本。他們的高效率和高品質(zhì)服務(wù)讓我們感到非常滿意。”

      總結(jié)

      好太太整體廚房是一個專業(yè)的廚房改建公司,致力于提供高效率和高品質(zhì)的服務(wù)。他們提供個性化的設(shè)計方案、高品質(zhì)的材料、高效率的工作和透明的費(fèi)用結(jié)構(gòu),以確保客戶滿意度。如果您正在尋找一個高效率和高品質(zhì)的廚房改建公司,那么好太太整體廚房是一個不錯的選擇。

      三、好太太智能晾衣機(jī)

      好太太智能晾衣機(jī):將衣物晾曬變得更智能

      現(xiàn)代生活中,晾曬衣物是我們?nèi)粘1夭豢缮俚募覄?wù)活之一。但是,往往天氣不好或者沒有足夠的戶外空間來晾曬衣物,給我們帶來了很多不便。好太太智能晾衣機(jī)應(yīng)運(yùn)而生,解決了這個難題,為我們的生活帶來了更大的便利。

      好太太智能晾衣機(jī)采用了最先進(jìn)的技術(shù),將傳統(tǒng)的晾曬方式與智能科技完美結(jié)合。它具有多種晾曬模式和自動控制功能,能夠根據(jù)不同的衣物材質(zhì)和濕度情況進(jìn)行智能調(diào)控,讓衣物得到最佳的晾曬效果。

      智能晾曬,自動控制

      好太太智能晾衣機(jī)的最大特點就是智能控制。它配備了先進(jìn)的傳感器和控制系統(tǒng),可以根據(jù)室內(nèi)濕度、溫度和天氣情況智能調(diào)節(jié)晾曬的時間和模式。當(dāng)濕度較高時,它會自動延長晾曬時間,保證衣物能夠完全晾干。當(dāng)天氣變化時,它會根據(jù)實時的天氣數(shù)據(jù)自動調(diào)整晾曬模式,確保衣物不會受到潮濕或日曬過度。

      除了智能控制功能外,好太太智能晾衣機(jī)還具備人性化的設(shè)計。它可以根據(jù)衣物的種類和數(shù)量進(jìn)行晾曬模式的選擇,例如大件衣物、小件衣物、家居用品等等,讓晾曬更加合理、高效。同時,它還支持定時預(yù)約功能,可以根據(jù)個人需求,提前設(shè)置好晾曬的時間,讓衣物在你需要的時候可以立即取下,避免了長時間晾曬導(dǎo)致的皺折。

      智能保護(hù),貼心呵護(hù)

      好太太智能晾衣機(jī)不僅具備智能控制功能,還有多重安全防護(hù)措施,為用戶提供全方位的保護(hù)。它采用了高溫防燙技術(shù),能夠在晾曬過程中殺菌和除螨,使衣物更加清潔衛(wèi)生。同時,它還具備智能防風(fēng)和防塵功能,有效防止外界灰塵和風(fēng)沙對衣物的污染和損害。

      此外,好太太智能晾衣機(jī)還具備智能感應(yīng)功能,可以通過傳感器實時監(jiān)測晾曬過程中的衣物狀態(tài),一旦發(fā)現(xiàn)異常情況,例如衣物糾纏、搖晃等,會立即停止晾曬,避免衣物受損。同時,它還支持智能調(diào)溫功能,可以根據(jù)季節(jié)和天氣變化調(diào)節(jié)晾曬環(huán)境的溫度,保護(hù)衣物的質(zhì)地和色彩。

      智能管理,輕松便捷

      好太太智能晾衣機(jī)的智能管理功能讓晾曬衣物變得輕松便捷。它支持智能手機(jī)APP控制,可以通過手機(jī)隨時隨地控制晾衣機(jī)的開關(guān)、模式和時間。你可以在上班途中或者外出旅行時,通過手機(jī)APP將晾曬時間提前或推遲,確保衣物晾曬得當(dāng)。

      此外,好太太智能晾衣機(jī)還支持語音控制功能,可以與智能音箱或智能助手連接,通過語音指令完成晾曬的操作。例如,你可以對晾衣機(jī)說:“好太太,曬干我的衣服”,晾衣機(jī)就會自動啟動并根據(jù)設(shè)置的模式進(jìn)行晾曬。這種智能化的操作方式,讓你從繁瑣的開關(guān)控制中解放出來,享受更多的便利。

      總結(jié)

      好太太智能晾衣機(jī)以其智能化、安全性和便捷性的特點,成為現(xiàn)代家庭不可或缺的晾曬利器。它讓我們告別傳統(tǒng)的晾衣方式,享受智能化的晾曬體驗。無論是在天氣惡劣的日子,還是沒有足夠的戶外空間時,好太太智能晾衣機(jī)都能夠為我們提供一個理想的解決方案。

      四、好太太定制的柜子怎么樣?

      其實全屋定制專輯里頭內(nèi)容已經(jīng)夠多了,目前已經(jīng)有將近百篇的專題了。

      鏈接在微信快捷菜單,直接點擊進(jìn)入專輯閱讀即可。今天給大家羅列一下全屋定制里頭的坑,大家照著做,絕對沒有問題。

      一.定金坑。一定注意,搞清楚計費(fèi)方式才能交定金。全屋定制不比裝修,必須交定金才能上門測量的,所以一定搞清楚計費(fèi)方式。

      最好是用你家戶型圖讓直接估價,能承受價格,搞清楚板材五金以后再交定金上門量房。

      計費(fèi)方式投影最好,也就是不論你有多么個性的要求,總價是不會有太大變化的;否則展開計算,那差太遠(yuǎn)了,你的個性要求越多,總價就會越貴。

      二.低價坑。這個很好理解,你家懂行的一看需要兩萬,故意給你設(shè)計成一萬出頭,讓你交大定,設(shè)計的時候,你這里要個抽屜,那里加個層板,然后三四萬都有了,等到你后悔已經(jīng)遲了。

      特別是剛需業(yè)主,一定謹(jǐn)慎,你以為一萬搞定的可能掉進(jìn)三四萬的坑里頭。不要貪圖低價,搞清楚低價的原因才是重要的

      三.以下項目能給你單獨收費(fèi)的,你一定要提前知道。1.抽屜。一般有的給你送兩個免費(fèi),外加的收費(fèi);此處一定注意如果是展開計費(fèi),你的抽屜越多,總價會越高,這樣就遠(yuǎn)遠(yuǎn)超出當(dāng)初給你的價格了。

      2.層板多少。這個也會加錢?當(dāng)然會,遍地套餐全屋定制,你以為價格真的那么低?肯定不是,只要你的要求超出套餐的范圍,必須加錢,如果是展開計費(fèi),那總價就不是一點一點高了。好的定制一定是投影計價,不論你做多少層板都不會加錢的。

      抽屜和層板幾乎是加項的重頭,因為大部分套餐全屋定制,都巴不得給你展開計費(fèi),你的要求越多,加錢越多,除非你什么要求都不要,套餐含有什么要什么。但是家里就和定大盒子一樣,完全失去意義和功能了。

      3.邊線、頂線。一般全屋定制里頭都有這個項目,一定問清是否收費(fèi),收費(fèi)需要多少。

      以上三點能給你收費(fèi)的,基本可以斷定,你找的是二道販子,絕對不是廠家。

      你以為你找的大品牌是廠家?都是加盟而已,一年那么多費(fèi)用,羊毛出在羊身上。總店即使給加盟商免費(fèi),加盟的店面打死也不敢免費(fèi),高昂的加盟費(fèi)傷不起。為什么要加盟?遍地的業(yè)主相信所謂大品牌,當(dāng)然加盟最能賺錢了。

      除非你找廠家源頭,層板和抽屜再多,其實都是你家板子裁割出來的,直接就用了。

      4.見光板。這個幾乎家家都得有,數(shù)量很少,一般需要在設(shè)計中解決不同材質(zhì)的色差問題。因為一般見光板需要和門板同材質(zhì),所以幾乎都得單獨計費(fèi)。

      5.五金件。一定搞清楚五金件都包括哪些,不包括哪些。否則后期就說不清了,你需要的都是額外需要加錢的。

      6.套色以及局部加厚版。家里定制逃不開套色設(shè)計,這里一定問清是否單獨收費(fèi);局部加厚板,例如書桌面,書架層板用25板是否單獨加錢,否則前期給你說的統(tǒng)一18板,后期你只要要求,全得加錢。

      7.背板厚度。一般各大定制商默認(rèn)背板都是五厘或者九厘板,你得提前知悉。

      四.籠統(tǒng)報價一定問清實際誤差。進(jìn)店籠統(tǒng)報價一定問清到底實際設(shè)計出來能差多少,如果是展開計費(fèi)問了也白問,和你后期的要求是有關(guān)系的。你以為的低價取決于你,你要求越多總價肯定越高。

      一定是投影計價,而且抽屜層板套色邊線隨便做,這樣不論你后期個性要求再多,總價都是不變的。

      五.和裝修一樣,便宜不要占。做全屋定制是套餐的不要碰,不要碰,不要碰;和裝修套餐一丘之貉,坑不死你絕對不可能;同樣,動不動送你木門的,送你一件定制家具的,你以為你長得好看?不是,因為你長得很好坑,后面必然出事。

      這是基本常識,如果你喜歡占便宜,接受了免費(fèi)的東西,坑了就默認(rèn)了吧:天下沒有免費(fèi)的午餐。

      六.環(huán)保坑,自己思考,不要聽信商家信口雌黃。全屋定制和裝修一樣,需要根據(jù)房子里頭的人設(shè)計,而非只是做個形式。家居設(shè)計脫離入住人的實際情況,不啻是耍流氓。

      例如家里有小孩未分房,使勁給你主臥用顆粒板;例如孩子剛分房單獨住,使勁給兒童房做顆粒板。這種商家你如果還無知的感激人家,只能說你自己沒救了。別人賺你的錢害你孩子的命,你何來勇氣感激他?

      但是也不要因噎廢食,不看自己的經(jīng)濟(jì)情況,一聽污染直接全部實木,真的沒有必要,需要分開思考;孩子房間或者孩子和大人一塊住的房間,做實木即可,其他人造板就行,這樣既保證基本的健康同時也節(jié)省了費(fèi)用。

      七.水比酒貴。全屋定制里頭水比酒貴比比皆是。例如炒作出來的大品牌顆粒板,甚至有的價格高過實木定制價格。

      為什么?人造板顏值和綜合穩(wěn)定性。這兩個條件實木敗得一塌糊涂;如果論環(huán)保,實木完勝。所以這里需要你獨立思考,看重哪方面來抉擇。

      八.和裝修一樣,十全十美幾乎不可能盡力而為,不坑你,后期有問題能無條件給你維修,這就是好的商家。

      裝修本就是定制個性生活,全屋定制是定制你的個性收納;每一家遇到的情況都不同,每一家遇到的問題都不一樣,不是具象商品,需要太多人協(xié)調(diào)溝通,所以還是一句話:不怕出問題,出問題能承擔(dān)責(zé)任解決問題,這就是商家的本分。

      五、好太太廚具是否值得購買?| 好太太廚具真的靠譜嗎?

      好太太廚具是否值得購買?

      在當(dāng)今家居市場上,好太太廚具作為一家知名品牌備受消費(fèi)者關(guān)注。然而,面對市面上琳瑯滿目的廚具品牌,消費(fèi)者常常感到迷茫。那么,好太太廚具是否真的靠譜呢?是否值得購買呢?

      首先,好太太廚具在市場上擁有較長的歷史。自創(chuàng)立以來,該品牌一直致力于提供優(yōu)質(zhì)的廚具產(chǎn)品,深受消費(fèi)者的好評。其產(chǎn)品涵蓋了炒鍋、煎鍋、蒸鍋等多個系列,可以滿足不同廚房需求。不僅如此,好太太廚具注重創(chuàng)新與技術(shù)研發(fā),不斷推出新品,以迎合市場的需求變化。

      其次,好太太廚具的產(chǎn)品質(zhì)量值得信賴。作為一家有著嚴(yán)格質(zhì)檢標(biāo)準(zhǔn)的企業(yè),好太太廚具將產(chǎn)品質(zhì)量放在首位。通過嚴(yán)格的原材料選擇和生產(chǎn)工藝控制,好太太廚具確保每一件產(chǎn)品的品質(zhì)都經(jīng)得起考驗。因此,消費(fèi)者可以放心購買并長時間使用這些產(chǎn)品,而不必?fù)?dān)心質(zhì)量問題。

      此外,好太太廚具注重用戶體驗。品牌的設(shè)計師在產(chǎn)品開發(fā)過程中,考慮了使用者的真實需求和使用習(xí)慣,致力于提供更便捷、實用的廚具。比如,好太太廚具的炒鍋采用了節(jié)能的設(shè)計,能夠快速均熱并快速烹飪食物,減少了烹飪時間和用火量,為用戶節(jié)省了時間和成本。

      當(dāng)然,每個人對于廚具的需求和口味不同。雖然好太太廚具的產(chǎn)品有諸多優(yōu)點,但也不可避免地存在一些缺點。例如,部分消費(fèi)者可能認(rèn)為好太太廚具的價格相對較高。但從整體性價比來看,好太太廚具的產(chǎn)品性能和使用壽命能夠彌補(bǔ)其價格上的差距。

      總而言之,好太太廚具作為一家知名品牌,在市場上具有一定的信譽(yù)和口碑。品牌歷史悠久,產(chǎn)品質(zhì)量可靠,用戶體驗優(yōu)秀。因此,如果您對于購買可靠耐用的廚具產(chǎn)品有需求,好太太廚具絕對是一個值得考慮的選擇。

      感謝您閱讀本文,希望對您選擇合適的廚具有所幫助。

      六、好太太有集成灶嗎?選擇好太太集成灶的優(yōu)勢分析

      好太太有集成灶嗎?選擇好太太集成灶的優(yōu)勢分析

      集成灶作為現(xiàn)代廚房的一種重要裝備,通過將爐灶、抽油煙機(jī)和消毒柜等功能集合在一體,既方便了廚房的使用,也提升了整體美觀度。好太太作為知名廚電品牌,自然也推出了自己的集成灶產(chǎn)品。

      那么,好太太有集成灶嗎?答案是肯定的。作為國內(nèi)廚電領(lǐng)先品牌,好太太推出了一系列的集成灶產(chǎn)品,滿足不同廚房風(fēng)格和個人需求。

      選擇好太太集成灶的優(yōu)勢

      1. 多種款式選擇:好太太的集成灶產(chǎn)品有多種款式可供選擇,包括內(nèi)嵌式、壁掛式、嵌入式等。無論是小戶型還是大型廚房,都能找到合適的產(chǎn)品。

      2. 強(qiáng)勁的抽風(fēng)排煙功能:好太太集成灶配備了高效的抽油煙機(jī),能夠有效清除煙霧和異味,保持廚房空氣清新。

      3. 智能控制系統(tǒng):好太太的集成灶產(chǎn)品采用了智能控制技術(shù),可以精確控制火力和溫度,讓烹飪更加方便和高效。

      4. 安全可靠:好太太集成灶產(chǎn)品通過了嚴(yán)格的安全認(rèn)證,使用高品質(zhì)的材料和技術(shù),確保用戶的使用安全。

      5. 人性化設(shè)計:好太太的集成灶產(chǎn)品考慮到用戶的使用體驗,采用了人性化的設(shè)計,比如一鍵清洗、防溢設(shè)計等,方便用戶的日常使用和維護(hù)。

      結(jié)論

      好太太有集成灶,而且在集成灶領(lǐng)域擁有多年的經(jīng)驗和實力。選擇好太太集成灶,不僅可以獲得多樣化的產(chǎn)品選擇,還能享受強(qiáng)勁的抽風(fēng)排煙功能、智能控制系統(tǒng)、安全可靠性和人性化設(shè)計等優(yōu)勢。無論是追求時尚美觀還是追求高效實用,好太太集成灶都能滿足您的需求。

      感謝您的閱讀,希望通過本文對“好太太有集成灶嗎”這一問題進(jìn)行了詳細(xì)的解答,并向您展示了選擇好太太集成灶的優(yōu)勢。如果您正在考慮購買集成灶產(chǎn)品,希望這篇文章能為您提供一些幫助與參考。

      七、真情好太太.專享好太太.真愛好太太是好太太品牌嗎?

      不是的,好太太品牌是廣東好太太科技集團(tuán)股份有限公司旗下的好太太晾曬品牌

      八、正品好太太與好太太區(qū)別?

      目前好太太制只做晾衣架。但是目前為止,市場上有很多賣好太太的店面。一時間,讓我們分不清真假。其實如果是正品的好太太專賣店都會有品牌的相關(guān)授權(quán)書。而且也會把授權(quán)書掛在最明顯的位置。好太太的商標(biāo)是HAOTATA

      請去具有專業(yè)授權(quán)的專賣店購買產(chǎn)品。

      九、如何使用好太太集成灶?| 好太太集成灶說明書

      好太太集成灶使用指南

      好太太集成灶是一種集燃?xì)庠睢⒂蜔煓C(jī)和蒸汽爐于一體的廚房設(shè)備,它不僅方便實用,還可以有效減少油煙對家庭環(huán)境和人體健康的影響。本說明書將為您介紹好太太集成灶的組成部分、使用步驟以及注意事項,幫助您更好地使用好太太集成灶。

      組成部分

      好太太集成灶由以下幾個組成部分構(gòu)成:

      • 燃?xì)庠睿?/strong>好太太集成灶配備了高效的燃?xì)庠睿梢詽M足您的炒、炸、煮等多種烹飪需求。
      • 油煙機(jī):好太太集成灶內(nèi)置了強(qiáng)力油煙機(jī),可以快速吸除炒菜產(chǎn)生的油煙,保持廚房空氣清新。
      • 蒸汽爐:好太太集成灶還配備了智能蒸汽爐,可以輕松蒸煮各種食材,快速做出美味的蒸菜。

      使用步驟

      1. 熟悉控制面板:先仔細(xì)閱讀好太太集成灶的控制面板指南,熟悉控制面板上的各個功能按鈕和顯示屏。
      2. 點火:按下燃?xì)庠畹狞c火按鈕,等待燃?xì)庠铧c火成功。
      3. 調(diào)節(jié)火力:根據(jù)菜品需要,通過控制面板上的火力調(diào)節(jié)按鈕,調(diào)節(jié)燃?xì)庠畹幕鹆Υ笮 ?/li>
      4. 使用油煙機(jī):在炒菜過程中,打開好太太集成灶的油煙機(jī)開關(guān),確保油煙可以順利被吸入油煙機(jī)。
      5. 使用蒸汽爐:將需要蒸煮的食材放入好太太集成灶的蒸汽爐中,按照控制面板上的指示設(shè)置好蒸汽爐的時間和溫度。
      6. 清潔:使用好太太集成灶后,要及時清潔各個部分,確保灶具的衛(wèi)生和安全。

      注意事項

      • 安裝:好太太集成灶的安裝必須由專業(yè)人員進(jìn)行,確保安裝穩(wěn)固可靠。
      • 燃?xì)猓?/strong>使用好太太集成灶時,要確保有足夠的燃?xì)夤?yīng),同時注意燃?xì)夤艿赖陌踩?/li>
      • 清潔:定期清潔好太太集成灶的各個部分,保持灶具的衛(wèi)生和使用壽命。
      • 使用:使用好太太集成灶時,要遵循操作指南,注意安全用火,避免造成火災(zāi)或其他事故。

      希望本說明書對您使用好太太集成灶有所幫助。如有任何疑問,請隨時聯(lián)系我們的客服咨詢,感謝您閱讀本文!

      十、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工具類進(jìn)行訓(xùn)練,得到訓(xùn)練模型。

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

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

      接下來貼下我的代碼實現(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工具類進(jìn)行訓(xùn)練,得到訓(xùn)練模型。

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

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

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

      国内精品久久久久_亚洲区手机在线中文无码播放_国内精品久久久久影院一蜜桃_日韩内射激情视频在线播放免费

        宿州市| 皋兰县| 太保市| 白沙| 康平县| 横山县| 溧水县| 浑源县| 金川县| 定兴县| 新巴尔虎左旗| 墨脱县| 阿鲁科尔沁旗| 会宁县| 惠来县| 治县。| 太谷县| 通江县| 深圳市| 宿松县| 剑阁县| 衡东县| 汝城县| 通化市| 博白县| 醴陵市| 通许县| 若尔盖县| 永寿县| 阿克陶县| 临泉县| 建昌县| 本溪| 石城县| 凤冈县| 凉城县| 双辽市| 大庆市| 襄樊市| 晋中市| 武城县|