紫金科技創(chuàng)業(yè)是當(dāng)今社會中備受關(guān)注的話題之一,許多年輕人和企業(yè)家都在努力創(chuàng)造出下一個(gè)獨(dú)角獸公司。作為一名投資專員,我深知這背后的辛苦和挑戰(zhàn)。在這篇博文中,我想分享一些關(guān)于紫金科技創(chuàng)業(yè)和投資的見解和經(jīng)驗(yàn)。
當(dāng)下,紫金科技創(chuàng)業(yè)迎來了前所未有的繁榮期。隨著科技的迅猛發(fā)展和資金的不斷涌入,許多創(chuàng)業(yè)者開始尋找機(jī)會在這個(gè)領(lǐng)域獲得成功。從共享經(jīng)濟(jì)到人工智能,各種創(chuàng)新技術(shù)不斷涌現(xiàn),為紫金科技創(chuàng)業(yè)帶來了無限可能。
作為投資專員,我負(fù)責(zé)對紫金科技創(chuàng)業(yè)項(xiàng)目進(jìn)行審查和評估。我需要深入了解每個(gè)項(xiàng)目的商業(yè)模式、市場前景以及團(tuán)隊(duì)背景。只有通過深入的盡職調(diào)查,才能幫助投資者做出明智的決策,并為項(xiàng)目的成功提供支持和指導(dǎo)。
在紫金科技創(chuàng)業(yè)領(lǐng)域,投資策略和風(fēng)險(xiǎn)控制至關(guān)重要。我需要密切關(guān)注市場動向,及時(shí)調(diào)整投資組合,降低投資風(fēng)險(xiǎn)。同時(shí),我還要識別和挖掘具有潛力的創(chuàng)業(yè)項(xiàng)目,為投資者創(chuàng)造更多的價(jià)值。
隨著紫金科技創(chuàng)業(yè)的不斷發(fā)展,未來的機(jī)會與挑戰(zhàn)并存。創(chuàng)新技術(shù)的應(yīng)用將不斷提升人們的生活質(zhì)量,同時(shí)也會帶來一系列新的挑戰(zhàn)與變革。作為一名投資專員,我將繼續(xù)秉承專業(yè)精神,為紫金科技創(chuàng)業(yè)領(lǐng)域的發(fā)展貢獻(xiàn)自己的力量。
華泰紫金證券投資基金是一家領(lǐng)先的投資管理機(jī)構(gòu),致力于為投資者提供專業(yè)、穩(wěn)健的投資方案。作為華泰紫金證券旗下的基金子公司,該基金秉承著華泰紫金的優(yōu)質(zhì)資源和專業(yè)經(jīng)驗(yàn),為廣大投資者提供全方位的資產(chǎn)配置服務(wù)。
華泰紫金證券投資基金根據(jù)市場情況和投資需求,采用多元化、差異化的投資策略?;鸾?jīng)理團(tuán)隊(duì)擁有豐富的投資經(jīng)驗(yàn)和深厚的市場洞察力,能夠迅速捕捉到市場機(jī)會并進(jìn)行相應(yīng)的調(diào)整。無論是價(jià)值投資、成長投資、還是主動投資、被動投資,華泰紫金證券投資基金始終以穩(wěn)健的風(fēng)險(xiǎn)控制和長遠(yuǎn)的業(yè)績?yōu)槟繕?biāo)。
核心競爭力:
華泰紫金證券投資基金的投資范圍涵蓋了多個(gè)資產(chǎn)類別,包括股票、債券、貨幣市場工具等,具有較高的配置靈活性。投資風(fēng)格上,該基金以價(jià)值投資為主導(dǎo),注重研究企業(yè)基本面和估值水平,從而找到低估值的投資機(jī)會。同時(shí),基金經(jīng)理團(tuán)隊(duì)也充分考慮市場的短期波動和風(fēng)險(xiǎn),靈活調(diào)整投資組合,以保障投資者的利益。
華泰紫金證券投資基金以其卓越的投資績效贏得了廣大投資者的認(rèn)可?;鸾?jīng)理團(tuán)隊(duì)精準(zhǔn)的買入和賣出時(shí)機(jī)、優(yōu)異的風(fēng)控能力以及深入的行業(yè)研究都為基金的業(yè)績提供了堅(jiān)實(shí)的支撐。根據(jù)歷史數(shù)據(jù),華泰紫金證券投資基金的回報(bào)率長期保持在行業(yè)前列,為投資者創(chuàng)造了豐厚的收益。
想要享受華泰紫金證券投資基金的專業(yè)投資服務(wù)?入駐華泰紫金證券投資基金非常簡單。只需要登錄華泰紫金證券官方網(wǎng)站,找到基金入駐申請界面,按照要求填寫相關(guān)信息,通過審核后即可開始享受基金的投資服務(wù)。
作為一家實(shí)力領(lǐng)先的投資管理機(jī)構(gòu),華泰紫金證券投資基金以其專業(yè)的投資策略、出色的投資績效和優(yōu)質(zhì)的客戶服務(wù)贏得了廣大投資者的信賴。通過入駐華泰紫金證券投資基金,您將能夠享受到專業(yè)的資產(chǎn)配置服務(wù),獲取穩(wěn)定的投資收益。
感謝您閱讀完這篇文章,希望通過這篇文章的介紹,您能夠了解華泰紫金證券投資基金的實(shí)力和優(yōu)勢,并在投資中做出明智的決策。
紫金所背后所依托的投資集團(tuán)是南京紫金投資集團(tuán)有限責(zé)任公司,而這家公司又是由南京市國資委全資控股,所以它的安全性,公正性是毋庸置疑的。
紫金礦業(yè)作為中國最大的黃金生產(chǎn)企業(yè)之一,其港股股價(jià)一直備受關(guān)注。近期,紫金礦業(yè)港股股價(jià)出現(xiàn)了一定的波動,這在一定程度上受到黃金價(jià)格、全球金融市場走勢等多方面因素的影響。
黃金作為紫金礦業(yè)的主要產(chǎn)品之一,其國際市場價(jià)格波動直接影響著紫金礦業(yè)的盈利能力和港股股價(jià)。近期,全球金融市場不穩(wěn)定,黃金作為避險(xiǎn)資產(chǎn)的地位再次凸顯,這也為紫金礦業(yè)港股股價(jià)提供了一定的支撐。
全球金融市場的不確定性因素,如中美貿(mào)易摩擦、地緣政治緊張局勢等,也對紫金礦業(yè)港股股價(jià)造成了一定程度的波動。投資者對于避險(xiǎn)資產(chǎn)的需求會受到這些因素的影響,進(jìn)而影響紫金礦業(yè)的股價(jià)。
綜合考慮黃金價(jià)格、全球金融市場走勢以及紫金礦業(yè)自身發(fā)展情況,我們認(rèn)為當(dāng)前階段紫金礦業(yè)港股具備較好的投資機(jī)會。長期來看,黃金作為避險(xiǎn)資產(chǎn)的地位不會輕易動搖,加之紫金礦業(yè)在黃金行業(yè)的龍頭地位,投資者可以逢低建倉,長期持有。
感謝您閱讀本文,希望本文能為您對紫金礦業(yè)港股股價(jià)的分析提供一定的幫助。
紫金薰衣草是一種美麗的花卉,其迷人的紫色花朵和芳香的氣味吸引了眾多花卉愛好者。它是一種多年生植物,屬于薰衣草科,原產(chǎn)于地中海地區(qū)。如今,在全球范圍內(nèi)種植和栽培,在花圃、庭院和花壇中可見到紫金薰衣草的身影。
紫金薰衣草以其獨(dú)特的特點(diǎn)而受到贊賞。它具有以下特點(diǎn):
紫金薰衣草的栽培并不困難,只需注意以下幾個(gè)技巧:
紫金薰衣草不僅僅是一種觀賞花卉,它還有許多用途:
紫金薰衣草是一種迷人的花卉,不僅具有美麗的花朵和芳香的氣味,而且還具有許多用途。無論是觀賞、室內(nèi)裝飾還是草藥治療,紫金薰衣草都展現(xiàn)出其獨(dú)特的魅力。如果你是花卉愛好者或者對精油療法感興趣,不妨考慮在自己的花園中種植一些紫金薰衣草,你會被它們的美麗和多樣化的用途所驚艷。
紫金駕校是一家領(lǐng)先的駕駛培訓(xùn)機(jī)構(gòu),致力于為學(xué)員提供高質(zhì)量的駕駛課程和專業(yè)的教練團(tuán)隊(duì)。我們擁有多年的教學(xué)經(jīng)驗(yàn),深知每位學(xué)員的需求和特點(diǎn),因此能夠針對個(gè)體差異制定個(gè)性化的學(xué)習(xí)計(jì)劃,幫助學(xué)員快速提升駕駛技能。
作為一家專業(yè)的駕駛培訓(xùn)機(jī)構(gòu),紫金駕校在教學(xué)過程中始終遵循以下原則:
在紫金駕校,學(xué)員不僅能夠掌握駕駛的基本技能,還能夠了解交通法規(guī)和安全知識,培養(yǎng)正確的駕駛態(tài)度與習(xí)慣。我們的教練團(tuán)隊(duì)經(jīng)驗(yàn)豐富,具備扎實(shí)的教學(xué)功底和豐富的駕駛經(jīng)驗(yàn),能夠耐心指導(dǎo)學(xué)員,幫助他們克服駕駛中的困難與挑戰(zhàn)。
紫金駕校提供多種駕駛課程,包括機(jī)動車駕駛、客車駕駛、貨車駕駛等多個(gè)類別。學(xué)員可以根據(jù)自身需求選擇適合的課程,每個(gè)課程都經(jīng)過精心設(shè)計(jì),內(nèi)容全面豐富,涵蓋了駕駛技能、交通法規(guī)、車輛檢修等多個(gè)方面。
我們還提供補(bǔ)習(xí)課程和模擬考試,幫助學(xué)員檢驗(yàn)學(xué)習(xí)效果,發(fā)現(xiàn)不足之處,并及時(shí)進(jìn)行彌補(bǔ)。紫金駕校的課程設(shè)置靈活多樣,能夠滿足不同學(xué)員的需求,幫助他們快速通過駕駛考試,取得駕駛證書。
紫金駕校擁有先進(jìn)的教學(xué)設(shè)備和良好的教學(xué)環(huán)境,為學(xué)員提供優(yōu)質(zhì)的學(xué)習(xí)條件。我們的教室寬敞明亮,配備了多媒體教學(xué)設(shè)備,能夠有效地輔助教學(xué),提高學(xué)習(xí)效果。
駕校的練車場地寬闊平整,符合交通標(biāo)準(zhǔn),能夠讓學(xué)員充分練習(xí)各項(xiàng)駕駛技能,提高駕駛水平。教練團(tuán)隊(duì)嚴(yán)格遵守教學(xué)規(guī)范,確保教學(xué)過程安全有序,有效地保障學(xué)員的學(xué)習(xí)體驗(yàn)。
多年來,紫金駕校培養(yǎng)了大量優(yōu)秀的駕駛員,贏得了學(xué)員們的好評與信賴。他們認(rèn)為紫金駕校的教學(xué)質(zhì)量高,教練團(tuán)隊(duì)專業(yè),課程設(shè)置合理,教學(xué)環(huán)境優(yōu)越。
學(xué)員們表示,在紫金駕校的學(xué)習(xí)經(jīng)歷讓他們受益匪淺,不僅提升了駕駛技能,還培養(yǎng)了安全意識和責(zé)任感。他們紛紛推薦紫金駕校給身邊的朋友和家人,希望更多的人能夠通過紫金駕校獲得優(yōu)質(zhì)的駕駛培訓(xùn)。
紫金駕校將繼續(xù)秉承專業(yè)、嚴(yán)謹(jǐn)、負(fù)責(zé)的教學(xué)理念,努力為學(xué)員提供更優(yōu)質(zhì)的駕駛培訓(xùn)服務(wù)。我們相信,在紫金駕校的指導(dǎo)下,每位學(xué)員都能夠成為一名安全、合格的駕駛員,為交通安全貢獻(xiàn)自己的力量。
中國是一個(gè)有著悠久歷史和豐富文化的國家,同時(shí)也是培育和繁殖獨(dú)特品種的樂土。在中國的寵物犬種當(dāng)中,紫金藏獒無疑是最引人注目的一種。這種古老的犬種在國內(nèi)外享有盛譽(yù),被譽(yù)為中國最優(yōu)秀的護(hù)衛(wèi)犬之一。
紫金藏獒的獨(dú)特之處在於它們的外貌和性格特點(diǎn)。這種犬種具有壯碩、肌肉發(fā)達(dá)的體型,體重通常超過100公斤,肩高可達(dá)75厘米。部呈現(xiàn)出方形,鼻子寬闊,下顎強(qiáng)壯,咬合力極大。
紫金藏獒的毛色多樣,有金色、黑色、灰色、銀色等,且毛質(zhì)柔軟而密集,具有極強(qiáng)的保護(hù)性和適應(yīng)力。它們的眼睛深邃而燦爛,充滿睿智之光。
除了外貌上的獨(dú)特之處,紫金藏獒還具有堅(jiān)毅而忠誠的性格。它們擁有強(qiáng)大的保護(hù)和守護(hù)本能,對主人極為忠心耿耿,非常善於保護(hù)家人和財(cái)產(chǎn)。
紫金藏獒是中國最優(yōu)秀的藏獒品種之一。從古老的塞北到喜馬拉雅山脈,藏獒一直與中國的歷史和文化息息相關(guān)。它們最早出現(xiàn)在中國北方的大草原地帶,隨著漢朝的興衰而逐漸發(fā)展壯大。
紫金藏獒被稱為"紫金",是因?yàn)樗鼈儍?yōu)秀的品質(zhì)和珍貴的身價(jià),與"天子"的象徵-"紫金之尊"相映成趣。紫金藏獒的歷史可以追溯到數(shù)千年前,它們被譽(yù)為中國皇帝的守衛(wèi)和尊榮象徵。
由於紫金藏獒具有強(qiáng)大的護(hù)衛(wèi)能力和出色的適應(yīng)力,它們在中國被廣泛使用於警察和軍方的護(hù)衛(wèi)工作中。在現(xiàn)代社會,紫金藏獒也成為了許多富有人士和名人的寵物選擇。
紫金藏獒的護(hù)衛(wèi)能力得益於其堅(jiān)韌的體型和頑強(qiáng)的性格。它們具有出色的聽覺和嗅覺,能夠準(zhǔn)確判斷威脅並做出反應(yīng)。紫金藏獒在面對威脅時(shí),會發(fā)出震耳欲聾的威嚇聲,嚇退侵入者。
紫金藏獒還可以在極端的氣候件下生存,具有耐寒、耐熱的特點(diǎn)。在高海拔地區(qū),紫金藏獒是適應(yīng)最好的犬種之一,能夠抵禦強(qiáng)風(fēng)、低氧和惡劣氣候帶來的挑戰(zhàn)。
作為一種優(yōu)秀的護(hù)衛(wèi)犬品種,紫金藏獒需要專業(yè)的飼養(yǎng)和訓(xùn)練。由於其體型和性格特點(diǎn),紫金藏獒需要足夠的活動空間和運(yùn)動量。飼主應(yīng)該為它們提供足夠的運(yùn)動和鍛煉,確保其體能和耐力。
在飼養(yǎng)紫金藏獒的過程中,注意良好的飲食和定期的健康檢查是至關(guān)重要的。紫金藏獒的飲食應(yīng)該均衡而富有營養(yǎng),以確保其身體健康和免疫力。定期的健康檢查可以及早發(fā)現(xiàn)和治療潛在的健康問題。
在訓(xùn)練方面,紫金藏獒需要早期社交化和基礎(chǔ)服從訓(xùn)練。早期社交化可以幫助紫金藏獒適應(yīng)不同的環(huán)境和人群,減少對陌生人的敵對性?;A(chǔ)服從訓(xùn)練可以建立起犬主關(guān)係,以確保紫金藏獒遵從主人的指令和指引。
紫金藏獒作為中國最優(yōu)秀的護(hù)衛(wèi)犬品種之一,以其壯碩的體型和堅(jiān)毅的性格贏得了無數(shù)人的喜愛和尊重。無論是在家庭、軍事還是警察領(lǐng)域,紫金藏獒都展現(xiàn)出出色的護(hù)衛(wèi)能力和忠心耿耿的品質(zhì)。
在飼養(yǎng)紫金藏獒的同時(shí),我們應(yīng)該給予它們適當(dāng)?shù)年P(guān)愛和尊重。適當(dāng)?shù)娘曫B(yǎng)和訓(xùn)練可以保證紫金藏獒的健康和快樂,同時(shí)讓我們感受到它們無私的愛和護(hù)衛(wèi)。
紫金礦業(yè)是中國最大的黃金生產(chǎn)企業(yè)之一,也是全球知名的礦業(yè)公司之一。作為一家上市公司,紫金礦業(yè)股票在多個(gè)交易市場都有交易,其中包括港股市場。本文將著重探討紫金礦業(yè)在港股市場的股票投資,分析其利與弊。
香港是亞洲最重要的金融中心之一,港股市場作為全球最大的股票市場之一,吸引著眾多國內(nèi)外投資者的關(guān)注。港股市場以其高度開放的特點(diǎn)和便捷的交易方式,為投資者提供了廣泛的選擇,同時(shí)也給投資者帶來了不少利益。
作為中國最大的黃金生產(chǎn)企業(yè)之一,紫金礦業(yè)在港股市場具備一定的投資價(jià)值。當(dāng)前全球金融市場的不確定性增加,黃金作為避險(xiǎn)資產(chǎn)備受關(guān)注,投資紫金礦業(yè)股票可以獲得黃金市場上的收益。此外,紫金礦業(yè)的業(yè)務(wù)規(guī)模龐大,良好的管理團(tuán)隊(duì)和穩(wěn)定的發(fā)展趨勢也為其帶來了投資機(jī)會。
投資港股股票需要了解港股市場的交易規(guī)則和投資方式,選擇合適的證券??司開通港股賬戶,并根據(jù)自身的風(fēng)險(xiǎn)承受能力和投資目標(biāo)進(jìn)行股票選擇和買賣決策。
港股市場作為全球最大的股票市場之一,投資者可以通過購買紫金礦業(yè)股票來參與其中。投資港股股票有其優(yōu)勢,如國際化程度高、品種豐富等;同時(shí)也存在著一定的風(fēng)險(xiǎn),如市場波動大、政策風(fēng)險(xiǎn)等。投資者在進(jìn)行港股投資時(shí)需要認(rèn)真研究并評估風(fēng)險(xiǎn)和收益,以做出相應(yīng)的投資決策。
感謝您閱讀本文,通過了解紫金礦業(yè)在港股市場的投資情況,希望能為您帶來一定的幫助。
好
紫金鼠紫金皮原皮變色快,盤玩效果好。一般成熟度好的鼠,密度和油性都不錯(cuò),所以上色包漿的效果就會快一些,一盤玩一周表皮會變色加深,兩周會變得油潤好看,一個(gè)月左右就會慢慢開始上漿。見效快是紫金鼠的一大特點(diǎn)。
紫金鼠最開始變色時(shí),顏色又紅又潤,有點(diǎn)像包漿的鳳眼,但是它包漿變色的效快多了。
之前看了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
檢測數(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。將要檢測數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。
4. 分類器對vector數(shù)據(jù)進(jìn)行分類。
接下來貼下我的代碼實(shí)現(xiàn)=》
1. 構(gòu)造分類數(shù)據(jù):
在hdfs主要創(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。將要檢測數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。
4. 分類器對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";
/*
* 測試代碼
*/
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)換成向量失?。?#34;);
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)換成向量失?。?#34;);
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)練模型失?。?#34;);
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初始化時(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("檢測所屬類別是:"+getCheckResult());
}
}