《Python數(shù)據(jù)分析與應(yīng)用》全套教學(xué)課件_第1頁(yè)
《Python數(shù)據(jù)分析與應(yīng)用》全套教學(xué)課件_第2頁(yè)
《Python數(shù)據(jù)分析與應(yīng)用》全套教學(xué)課件_第3頁(yè)
《Python數(shù)據(jù)分析與應(yīng)用》全套教學(xué)課件_第4頁(yè)
《Python數(shù)據(jù)分析與應(yīng)用》全套教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩714頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第1章數(shù)據(jù)分析基礎(chǔ)全套可編輯PPT課件1.1數(shù)據(jù)分析的基本概念1.2數(shù)據(jù)分析的任務(wù)與方法1.3典型數(shù)據(jù)領(lǐng)域與常見數(shù)據(jù)類型1.4數(shù)據(jù)分析的生態(tài)系統(tǒng)CONTENTS目錄1.5本書的內(nèi)容和組織(1)知道數(shù)據(jù)分析的定義,并了解數(shù)據(jù)分析范式。(2)了解數(shù)據(jù)分析所面臨的問題并能夠思考相應(yīng)的解決方案。(3)理解數(shù)據(jù)分析的相關(guān)概念。(4)了解數(shù)據(jù)分析的任務(wù)和方法。(5)熟悉不同領(lǐng)域的數(shù)據(jù)類型與常見數(shù)據(jù)類型。(6)熟悉數(shù)據(jù)分析的生態(tài)系統(tǒng)。學(xué)習(xí)目標(biāo)(1)數(shù)據(jù)分析的定義。(2)數(shù)據(jù)分析范式。(3)數(shù)據(jù)分析的任務(wù)與方法。(4)數(shù)據(jù)分析的生態(tài)系統(tǒng)。學(xué)習(xí)重點(diǎn)CONTENTS1.1數(shù)據(jù)分析的基本概念01020304數(shù)據(jù)分析的定義相關(guān)概念辨析數(shù)據(jù)分析面臨的問題1.1數(shù)據(jù)分析的基本概念數(shù)據(jù)分析范式1.1數(shù)據(jù)分析的基本概念理解數(shù)據(jù)分析的基礎(chǔ)是了解數(shù)據(jù)。從概念而言,大數(shù)據(jù)(bigdata)是1998年由SGI(美國(guó)硅圖公司)首席科學(xué)家JohnMashey在USENIX說明大會(huì)上提出的。他當(dāng)時(shí)發(fā)表了一篇名為BigDataandtheNextWaveofInfraStress的論文,使用了大數(shù)據(jù)來描述數(shù)據(jù)爆炸的現(xiàn)象。根據(jù)百度百科的定義,大數(shù)據(jù)是指無法在一定時(shí)間范圍內(nèi)用常規(guī)軟件工具進(jìn)行捕捉、管理和處理的數(shù)據(jù)集合,是需要新處理模式才能具有更強(qiáng)的決策力、洞察力和流程優(yōu)化能力的海量、高增長(zhǎng)率和多樣化的信息資產(chǎn)。在2015年《促進(jìn)大數(shù)據(jù)發(fā)展行動(dòng)綱要》中,大數(shù)據(jù)是指以容量大、類型多、存取速度快、應(yīng)用價(jià)值高為主要特征的數(shù)據(jù)集合,正快速發(fā)展為對(duì)數(shù)量巨大、來源分散、格式多樣的數(shù)據(jù)進(jìn)行采集、存儲(chǔ)和關(guān)聯(lián)分析,從中發(fā)現(xiàn)新知識(shí)、創(chuàng)造新價(jià)值、提升新能力的新一代信息技術(shù)和服務(wù)業(yè)態(tài)。想一想:你能舉出大數(shù)據(jù)應(yīng)用的示例嗎?0103050204volume(大量)variety(多樣)veracity(真實(shí)性)value(低價(jià)值密度)velocity(高速)1.1數(shù)據(jù)分析的基本概念I(lǐng)BM提出大數(shù)據(jù)具有5V特點(diǎn)。1.1.1數(shù)據(jù)分析的定義數(shù)據(jù)分析(dataanalysis)是指將各種算法應(yīng)用于大量的、有噪聲的、不完全的實(shí)際數(shù)據(jù)中,提取隱含在其中的、人們事先不知道的有用信息和知識(shí)的實(shí)踐過程。各種算法包括來自統(tǒng)計(jì)學(xué)中的抽樣、估計(jì)及假設(shè)檢驗(yàn),也包括機(jī)器學(xué)習(xí)、模式識(shí)別等領(lǐng)域的建模技術(shù)和學(xué)習(xí)理論。通過數(shù)據(jù)分析,可以發(fā)現(xiàn)個(gè)體對(duì)象的特征性質(zhì)、類別分布,也可以預(yù)測(cè)個(gè)體對(duì)象未來的觀測(cè)結(jié)果。數(shù)據(jù)分析為科學(xué)研究、社會(huì)管理、工業(yè)生產(chǎn)等提供了一種新的方法,其目的在于揭示自然現(xiàn)象與人類社會(huì)背后隱藏的特性和規(guī)律。對(duì)實(shí)際數(shù)據(jù)進(jìn)行探索、提取知識(shí)的過程一般包括數(shù)據(jù)預(yù)處理、數(shù)據(jù)分析、后處理等步驟,如圖1-1所示。1.1.1數(shù)據(jù)分析的定義數(shù)據(jù)分析主要涉及三個(gè)方面的內(nèi)容:數(shù)據(jù)分析理論、數(shù)據(jù)分析技術(shù)和數(shù)據(jù)分析實(shí)踐,如圖1-2所示。其中,數(shù)據(jù)分析理論是指人們對(duì)數(shù)據(jù)及數(shù)據(jù)資源利用相關(guān)的對(duì)象、價(jià)值及影響進(jìn)行思考而產(chǎn)生的認(rèn)知。通過分析累積的海量數(shù)據(jù),能夠?qū)崿F(xiàn)客戶群體細(xì)分、工作效率提高及業(yè)務(wù)模式創(chuàng)新等,從而極大地促進(jìn)經(jīng)濟(jì)社會(huì)發(fā)展。1.1.1數(shù)據(jù)分析的定義在此過程中,隨著數(shù)據(jù)分析應(yīng)用的逐漸深入及數(shù)據(jù)類型的多樣化和復(fù)雜化,數(shù)據(jù)分析的實(shí)踐形態(tài)和主要目標(biāo)也會(huì)逐步演化。以上活動(dòng)需要根據(jù)其特點(diǎn)進(jìn)行抽象提取,從而構(gòu)建數(shù)據(jù)分析過程的知識(shí)體系。例如,數(shù)據(jù)分析將來可能不再局限于從數(shù)據(jù)中提取有價(jià)值的信息這一任務(wù),由數(shù)據(jù)分析引起的數(shù)據(jù)隱私、數(shù)據(jù)產(chǎn)權(quán)、數(shù)據(jù)資源共享與管理等將成為新的理論焦點(diǎn);數(shù)據(jù)分析技術(shù)是指數(shù)據(jù)分析實(shí)施過程依賴的技術(shù)方法,包括數(shù)據(jù)存儲(chǔ)、算法模型、分布式平臺(tái)及云計(jì)算等。1.1.1數(shù)據(jù)分析的定義數(shù)據(jù)分析技術(shù)是落實(shí)數(shù)據(jù)分析理論的保障。根據(jù)現(xiàn)實(shí)應(yīng)用的業(yè)務(wù)場(chǎng)景,需要具備在不同數(shù)據(jù)分布、分析效率及任務(wù)要求條件下進(jìn)行數(shù)據(jù)分析的技術(shù)方法。例如,除了數(shù)據(jù)資源、算法模型之外,大規(guī)模數(shù)據(jù)分析實(shí)踐往往還需要存儲(chǔ)環(huán)境、計(jì)算平臺(tái)等;數(shù)據(jù)分析實(shí)踐是將數(shù)據(jù)分析技術(shù)與累積的海量數(shù)據(jù)相結(jié)合,產(chǎn)生有價(jià)值的信息、知識(shí)的具體過程。此過程往往與實(shí)際數(shù)據(jù)質(zhì)量、業(yè)務(wù)場(chǎng)景等緊密相關(guān),當(dāng)前的數(shù)據(jù)分析實(shí)踐主要可以分為個(gè)人數(shù)據(jù)分析實(shí)踐、企業(yè)數(shù)據(jù)分析實(shí)踐、政府?dāng)?shù)據(jù)分析實(shí)踐和互聯(lián)網(wǎng)數(shù)據(jù)分析實(shí)踐四類。實(shí)際上,數(shù)據(jù)分析理論是數(shù)據(jù)分析技術(shù)和數(shù)據(jù)分析實(shí)踐的基礎(chǔ)和指導(dǎo),數(shù)據(jù)分析技術(shù)是數(shù)據(jù)分析理論在實(shí)際業(yè)務(wù)場(chǎng)景下的實(shí)現(xiàn)途徑,數(shù)據(jù)分析實(shí)踐是基于數(shù)據(jù)分析理論和數(shù)據(jù)分析技術(shù)體現(xiàn)數(shù)據(jù)價(jià)值的最終過程。1.1.2數(shù)據(jù)分析范式數(shù)據(jù)分析的總體目標(biāo)是在已有數(shù)據(jù)集的基礎(chǔ)上,通過特定的算法提取信息,并將信息轉(zhuǎn)化為可理解的知識(shí),從而輔助決策。任何實(shí)際的數(shù)據(jù)分析過程都是重復(fù)這一數(shù)據(jù)分析的工作范式,如圖1-3所示。1.1.2數(shù)據(jù)分析范式具體來說,數(shù)據(jù)(data)是使用約定俗成的關(guān)鍵詞,對(duì)客觀事物的數(shù)量、屬性、位置及其相互關(guān)系進(jìn)行抽象表示,以適合在當(dāng)前的領(lǐng)域中用人工或自然的方式進(jìn)行保存、傳遞和處理。例如,通過高度20m、寬度80m、共3層這些數(shù)據(jù)便描述了客觀世界建筑物在人們大腦中的印象;信息(information)來源于數(shù)據(jù),但高于數(shù)據(jù)。信息是指具有時(shí)效性的、有一定含義的、有邏輯的、經(jīng)過加工處理的、對(duì)決策有價(jià)值的數(shù)據(jù)流;信息雖給出了數(shù)據(jù)中一些有一定意義的東西,但它的價(jià)值往往會(huì)在時(shí)間效用失效后開始衰減,只有通過人們的參與,對(duì)信息進(jìn)行歸納、演繹、比較等處理,使其有價(jià)值的部分沉淀下來,并與已存在的人類知識(shí)體系相結(jié)合,這部分有價(jià)值的信息就轉(zhuǎn)變成知識(shí)(knowledge),即知識(shí)就是沉淀并與已有人類知識(shí)庫(kù)進(jìn)行結(jié)構(gòu)化的有價(jià)值信息;決策(decision)是指在獲取知識(shí)的基礎(chǔ)上,根據(jù)實(shí)際業(yè)務(wù)場(chǎng)景采取有效行動(dòng)從而提高收益的具體過程。1.1.2數(shù)據(jù)分析范式以商品房銷售為例,數(shù)據(jù)是指銷售過程中交易行為的直接記錄,包括房屋位置、房屋面積、房屋類型、交易時(shí)間、成交價(jià)格等;基于以上原始記錄,通過對(duì)數(shù)據(jù)進(jìn)行處理,得出類似“201×年×月北京市朝陽(yáng)區(qū)商品房銷售價(jià)格同比上漲×%”的結(jié)論,即為獲得信息;人們通過對(duì)以上類似的信息進(jìn)行歸納、演繹、比較等處理,使其有價(jià)值的部分沉淀下來,并與已存在的人類知識(shí)體系相結(jié)合,這些有價(jià)值的信息就轉(zhuǎn)變成知識(shí),即類似“由于土地供應(yīng)有限,人口迅速增加,北京市商品房交易價(jià)格總體上處于并將繼續(xù)處于上漲態(tài)勢(shì)”;在以上數(shù)據(jù)分析的基礎(chǔ)上,人們基于獲得的知識(shí)進(jìn)行最終的投資決策,即“通過購(gòu)置房產(chǎn)以獲得較高的投資回報(bào)”。以上即為通過房屋交易記錄處理,最終輔助決策的數(shù)據(jù)分析過程。想一想:你還能說出其他的例子嗎?1.1.3數(shù)據(jù)分析面臨的問題0103050204可伸縮性異構(gòu)及復(fù)雜數(shù)據(jù)隱私保護(hù)數(shù)據(jù)分布高維性1.1.3數(shù)據(jù)分析面臨的問題1.可伸縮性由于數(shù)據(jù)分析任務(wù)中實(shí)際數(shù)據(jù)量的巨大差異,要求數(shù)據(jù)分析的模型算法能夠處理大數(shù)據(jù)集,且時(shí)間復(fù)雜度不能太高,消耗的內(nèi)存空間也有限,即必須是可伸縮(scalable)的。為了實(shí)現(xiàn)可伸縮的數(shù)據(jù)分析,研究人員已經(jīng)進(jìn)行了許多有益的嘗試,包括增量式方法、數(shù)據(jù)采樣方法、數(shù)據(jù)壓縮方法、分布式算法、并行框架等。1.1.3數(shù)據(jù)分析面臨的問題2.高維性傳統(tǒng)的數(shù)據(jù)集一般只有少量的屬性,然而,大數(shù)據(jù)時(shí)代數(shù)據(jù)集的屬性往往是成百上千的。由于數(shù)據(jù)采集技術(shù)的進(jìn)步,同樣的對(duì)象可以通過更多傳感器從更加豐富的角度進(jìn)行感知刻劃,從而導(dǎo)致數(shù)據(jù)維度增加。隨著數(shù)據(jù)維度的增加,可能的組合數(shù)量也隨之上升,樣本在屬性空間中變得稀疏,從而很可能產(chǎn)生無意義的分析結(jié)果。如果持續(xù)增加維度,訓(xùn)練數(shù)據(jù)需要指數(shù)級(jí)的增加才能避免過擬合。另外,維度增加會(huì)導(dǎo)致計(jì)算機(jī)內(nèi)存消耗巨大、計(jì)算時(shí)間延長(zhǎng)。而且,在高維空間中,樣本距離的度量失去意義,會(huì)影響K-means、KNN(K-nearestneighbor,K近鄰算法)等基于距離計(jì)算的方法的精度和性能。1.1.3數(shù)據(jù)分析面臨的問題3.異構(gòu)及復(fù)雜數(shù)據(jù)傳統(tǒng)數(shù)據(jù)分析任務(wù)中的數(shù)據(jù)類型主要包括文本、圖像、數(shù)字、語(yǔ)音信號(hào)等,通過聚類、分類等發(fā)現(xiàn)其蘊(yùn)含的模式和語(yǔ)義。隨著數(shù)量采集技術(shù)的發(fā)展和數(shù)據(jù)分析在各個(gè)領(lǐng)域的廣泛應(yīng)用,數(shù)據(jù)類型越來越復(fù)雜。例如,由于在線社交網(wǎng)絡(luò)的興起,同時(shí)包含文本、圖片、關(guān)系鏈的多媒體信息對(duì)于知識(shí)挖掘變得愈發(fā)重要。另外,刻劃個(gè)體及其之間相互關(guān)聯(lián)關(guān)系的圖數(shù)據(jù)也成為大數(shù)據(jù)中的一種重要數(shù)據(jù)類型。隨著定位技術(shù)和移動(dòng)互聯(lián)網(wǎng)的發(fā)展,車輛及行人軌跡數(shù)據(jù)的量級(jí)也在迅猛增長(zhǎng)。為了挖掘這些復(fù)雜數(shù)據(jù)對(duì)象,需要開發(fā)與數(shù)據(jù)特征相適應(yīng)的新型數(shù)據(jù)分析方法。1.1.3數(shù)據(jù)分析面臨的問題4.數(shù)據(jù)分布隨著數(shù)據(jù)采集技術(shù)的進(jìn)步,生成的數(shù)據(jù)量往往十分巨大。所以,構(gòu)建集中的數(shù)據(jù)存儲(chǔ)空間是極具挑戰(zhàn)性的。而且,由于網(wǎng)絡(luò)數(shù)據(jù)傳輸帶寬的限制,海量數(shù)據(jù)傳輸?shù)暮臅r(shí)也難以接受。例如,當(dāng)前無處不在的監(jiān)控?cái)z像頭雖然記錄了大量視頻監(jiān)控?cái)?shù)據(jù),但是實(shí)際上是無法進(jìn)行集中統(tǒng)一分析的,這些數(shù)據(jù)是在各個(gè)區(qū)域分散保存的。另外,由于數(shù)據(jù)所有權(quán)的問題,數(shù)據(jù)分析任務(wù)可以擁有數(shù)據(jù)的使用權(quán),但沒有數(shù)據(jù)的所有權(quán)。因此,只能通過遠(yuǎn)程訪問進(jìn)行數(shù)據(jù)分析。所以,實(shí)際數(shù)據(jù)常常處于不同地理位置及不同機(jī)構(gòu)中,大數(shù)據(jù)的資源利用要求開發(fā)分布式的數(shù)據(jù)分析技術(shù)。1.1.3數(shù)據(jù)分析面臨的問題5.隱私保護(hù)由于實(shí)際數(shù)據(jù)中經(jīng)常包含用戶隱私信息,直接基于這個(gè)數(shù)據(jù)進(jìn)行分析挖掘會(huì)泄露用戶隱私。因此,需要在操作、分析這些數(shù)據(jù)的同時(shí)保護(hù)用戶隱私。當(dāng)前,研究人員已開始關(guān)注密文可搜索機(jī)制、支持隱私保護(hù)的數(shù)據(jù)聚類等研究。舉個(gè)例子醫(yī)療機(jī)構(gòu)積累了大量醫(yī)療數(shù)據(jù),通過對(duì)這些數(shù)據(jù)進(jìn)行分析,可能優(yōu)化疾病的治療效果、提高疾病的治愈率。然而,通過專業(yè)機(jī)構(gòu)進(jìn)行醫(yī)療數(shù)據(jù)分析需要考慮患者的隱私問題,需要使用保障數(shù)據(jù)安全的數(shù)據(jù)分析方法。1.1.4相關(guān)概念辨析為了分析處理來自各個(gè)領(lǐng)域、面向不同需求的數(shù)據(jù)處理任務(wù),研究人員和工程師提出了很多相互聯(lián)系但又有所差異的概念和定義。首先,數(shù)據(jù)必須保存在存儲(chǔ)空間中才能夠進(jìn)行數(shù)據(jù)分析,數(shù)據(jù)庫(kù)是保存數(shù)據(jù)的主要形式。由于數(shù)據(jù)規(guī)模大、存儲(chǔ)位置比較分散,為了提高計(jì)算效率,數(shù)據(jù)分析常常依賴于并行計(jì)算和分布式計(jì)算框架。為了能夠讓計(jì)算機(jī)擁有人的能力從而實(shí)現(xiàn)人工智能,研究人員提出了許多利用經(jīng)驗(yàn)數(shù)據(jù)的學(xué)習(xí)算法,即機(jī)器學(xué)習(xí)。1.1.4相關(guān)概念辨析機(jī)器學(xué)習(xí)的理論基礎(chǔ)主要是統(tǒng)計(jì)學(xué),為了能夠從數(shù)據(jù)中提取有用的知識(shí),數(shù)據(jù)分析經(jīng)常需要采用機(jī)器學(xué)習(xí)方法。從而,數(shù)據(jù)分析可以被視為機(jī)器學(xué)習(xí)與數(shù)據(jù)庫(kù)的交叉,利用機(jī)器學(xué)習(xí)領(lǐng)域提供的技術(shù)分析海量數(shù)據(jù),利用數(shù)據(jù)庫(kù)領(lǐng)域的技術(shù)進(jìn)行海量數(shù)據(jù)的管理。同時(shí),機(jī)器學(xué)習(xí)一般指實(shí)現(xiàn)數(shù)據(jù)建模學(xué)習(xí)的相關(guān)算法,數(shù)據(jù)分析主要指從數(shù)據(jù)中提取有用知識(shí)的過程。數(shù)據(jù)分析除包括相關(guān)建模學(xué)習(xí)算法之外,還包括數(shù)據(jù)清洗、描述性分析等步驟?;蛘?,機(jī)器學(xué)習(xí)注重相關(guān)機(jī)器學(xué)習(xí)算法的理論研究和算法提升,數(shù)據(jù)挖掘注重運(yùn)用算法或其他某種模式來解決實(shí)際問題。1.1.4相關(guān)概念辨析機(jī)器學(xué)習(xí)為數(shù)據(jù)挖掘提供解決實(shí)際問題的方法,數(shù)據(jù)挖掘中算法的成功應(yīng)用,說明了機(jī)器學(xué)習(xí)對(duì)算法的研究具有實(shí)際運(yùn)用價(jià)值。在數(shù)據(jù)分析和機(jī)器學(xué)習(xí)算法的形成過程中,還吸收了來自其他領(lǐng)域的思想,包括最優(yōu)化、進(jìn)化計(jì)算、信息論和信號(hào)處理。信息檢索指從數(shù)據(jù)集合或數(shù)據(jù)接口中查找個(gè)別記錄的過程,主要依賴于數(shù)據(jù)的明顯特征來創(chuàng)建索引結(jié)構(gòu),從而有效地組織和檢索信息。1.1.4相關(guān)概念辨析數(shù)據(jù)分析與機(jī)器學(xué)習(xí)的發(fā)展不是孤立的,是被廣泛應(yīng)用于各個(gè)領(lǐng)域、與各個(gè)領(lǐng)域的發(fā)展共同成長(zhǎng)的。例如,機(jī)器學(xué)習(xí)在視覺領(lǐng)域的應(yīng)用形成了計(jì)算機(jī)視覺(computationalvision)方向。計(jì)算機(jī)視覺通過采集圖片或視頻,對(duì)圖片或視頻進(jìn)行處理分析,從中獲取相對(duì)應(yīng)的信息。換而言之,就是運(yùn)用照相機(jī)和計(jì)算機(jī)來獲取我們所需的信息。另外,機(jī)器學(xué)習(xí)在漢語(yǔ)、英語(yǔ)、法語(yǔ)等自然語(yǔ)言領(lǐng)域的應(yīng)用形成了自然語(yǔ)言處理(naturallanguageprocessing)方向。自然語(yǔ)言處理,簡(jiǎn)單來說就是計(jì)算機(jī)接收用戶自然語(yǔ)言形式的輸入,并在內(nèi)部通過人類所定義的算法進(jìn)行加工、計(jì)算等一系列操作,以模擬人類對(duì)自然語(yǔ)言的理解,并返回用戶所期望的結(jié)果。隨著互聯(lián)網(wǎng)、在線社交網(wǎng)絡(luò)、生物信息網(wǎng)絡(luò)等的興起,世界萬(wàn)物變得愈發(fā)相互關(guān)聯(lián),從而形成了以頂點(diǎn)及頂點(diǎn)間的邊為結(jié)構(gòu)的大規(guī)模圖數(shù)據(jù)。1.1.4相關(guān)概念辨析機(jī)器學(xué)習(xí)在圖數(shù)據(jù)分析領(lǐng)域的應(yīng)用形成了圖計(jì)算(graphcomputing)方向。圖計(jì)算就是主要針對(duì)結(jié)點(diǎn)關(guān)系型數(shù)據(jù),研究在這樣的數(shù)據(jù)上進(jìn)行高效的檢索、分類、聚類、預(yù)測(cè)等任務(wù)。圖1-4展示了數(shù)據(jù)分析與其他領(lǐng)域之間的關(guān)系。CONTENTS1.2數(shù)據(jù)分析的任務(wù)與方法1.2數(shù)據(jù)分析的任務(wù)與方法在數(shù)據(jù)分析挖掘之前,首先需要確定任務(wù)目標(biāo)、理解如何從數(shù)據(jù)分析結(jié)果中受益。然后收集需要的數(shù)據(jù),并進(jìn)行數(shù)據(jù)清洗、集成和轉(zhuǎn)換等數(shù)據(jù)準(zhǔn)備工作。在進(jìn)行數(shù)據(jù)分析建模之前,需要深入地探索理解數(shù)據(jù),了解各屬性元素之間的相互作用,熟悉數(shù)據(jù)的分布及特征。最后進(jìn)行數(shù)據(jù)分析建模,對(duì)數(shù)據(jù)的分析結(jié)果進(jìn)行展示和應(yīng)用。所以,數(shù)據(jù)分析挖掘總體上包括如下六個(gè)階段。(1)確定目標(biāo)。(2)數(shù)據(jù)收集。(3)數(shù)據(jù)準(zhǔn)備。(4)數(shù)據(jù)探索。(5)數(shù)據(jù)建模。(6)展示應(yīng)用。1.2數(shù)據(jù)分析的任務(wù)與方法另外,數(shù)據(jù)分析挖掘過程中數(shù)據(jù)的建模學(xué)習(xí)也需要多個(gè)步驟,具體包括以下幾個(gè)方面。(1)選擇數(shù)據(jù):將數(shù)據(jù)分成訓(xùn)練數(shù)據(jù)、驗(yàn)證數(shù)據(jù)和測(cè)試數(shù)據(jù)。(2)模型學(xué)習(xí):使用訓(xùn)練數(shù)據(jù)來構(gòu)建基于相關(guān)特征的模型。(3)驗(yàn)證模型:使用驗(yàn)證數(shù)據(jù)直接進(jìn)行模型評(píng)價(jià)。(4)測(cè)試模型:使用測(cè)試數(shù)據(jù)檢查被驗(yàn)證的模型的性能表現(xiàn)。(5)調(diào)優(yōu)模型:使用更多數(shù)據(jù)、不同的特征或不同的參數(shù)取值來提升

算法的性能表現(xiàn)。01020304分類任務(wù)降維任務(wù)聚類任務(wù)1.2數(shù)據(jù)分析的任務(wù)與方法回歸任務(wù)根據(jù)數(shù)據(jù)集中其他屬性的取值預(yù)測(cè)特定屬性的取值,或者根據(jù)歷史樣本數(shù)據(jù)預(yù)測(cè)當(dāng)前及未來樣本的取值的過程即為預(yù)測(cè)(prediction)建模。預(yù)測(cè)建模的目標(biāo)是訓(xùn)練一個(gè)模型,使目標(biāo)變量預(yù)測(cè)值與實(shí)際值之間的誤差達(dá)到最小。實(shí)際上,用于預(yù)測(cè)離散目標(biāo)變量的分類(classification)任務(wù),以及用于預(yù)測(cè)連續(xù)目標(biāo)變量的回歸(regression)任務(wù)都屬于預(yù)測(cè)建模。面對(duì)各種各樣的數(shù)據(jù)分析需求,當(dāng)前主要的數(shù)據(jù)分析建模算法按學(xué)習(xí)結(jié)果可分為分類、回歸、聚類和降維四個(gè)任務(wù)。1.2.1分類任務(wù)樸素貝葉斯K近鄰算法決策樹人工神經(jīng)網(wǎng)絡(luò)支持向量機(jī)1.2.1分類任務(wù)1.樸素貝葉斯樸素貝葉斯是基于貝葉斯定理與特征條件獨(dú)立假設(shè)的分類方法,發(fā)源于古典數(shù)據(jù)理論,擁有穩(wěn)定的數(shù)學(xué)基礎(chǔ)和分類效率。它是一種十分簡(jiǎn)單的分類算法,通過對(duì)給出的待分類項(xiàng)求解各項(xiàng)類別的出現(xiàn)概率大小,來判斷此待分類項(xiàng)屬于哪個(gè)類別。貝葉斯適用于特征之間的相互獨(dú)立的場(chǎng)景,如利用花瓣的長(zhǎng)度和寬度來預(yù)測(cè)花的類型。“樸素”的內(nèi)涵可以理解為特征和特征之間獨(dú)立性強(qiáng)。樸素貝葉斯在文本分類問題中會(huì)有很好的效果,常被用于垃圾郵件過濾、醫(yī)療診斷中。1.2.1分類任務(wù)2.支持向量機(jī)支持向量機(jī)是一種監(jiān)督式學(xué)習(xí)方法,可廣泛應(yīng)用于統(tǒng)計(jì)分類及回歸分析。支持向量機(jī)屬于一般化線性分類器,它能夠同時(shí)最小化經(jīng)驗(yàn)誤差和最大化幾何邊緣,因此,支持向量機(jī)也被稱為最大邊緣分類器。3.K近鄰算法KNN是一個(gè)比較簡(jiǎn)單的分類、預(yù)測(cè)算法。首先選取與待分類數(shù)據(jù)最相似的K個(gè)訓(xùn)練數(shù)據(jù),然后通過對(duì)這K個(gè)數(shù)據(jù)的結(jié)果或分類標(biāo)號(hào)進(jìn)行取均值、取眾數(shù)等方法得到待分類、待預(yù)測(cè)數(shù)據(jù)的結(jié)果或分類標(biāo)號(hào)。1.2.1分類任務(wù)4.人工神經(jīng)網(wǎng)絡(luò)人工神經(jīng)網(wǎng)絡(luò)是一種模仿生物神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和功能的數(shù)學(xué)模型或計(jì)算模型,用于對(duì)函數(shù)進(jìn)行估計(jì)或近似。人工神經(jīng)網(wǎng)絡(luò)通過大量的人工神經(jīng)元聯(lián)結(jié)進(jìn)行計(jì)算,通過在外界信息的基礎(chǔ)上修正內(nèi)部結(jié)構(gòu)和連接權(quán)值實(shí)現(xiàn)學(xué)習(xí)過程,是一種自適應(yīng)系統(tǒng)。人工神經(jīng)網(wǎng)絡(luò)在語(yǔ)音、圖片、視頻、游戲等各類應(yīng)用場(chǎng)景展現(xiàn)出優(yōu)異的性能,但是存在需要大量的數(shù)據(jù)進(jìn)行訓(xùn)練來提高準(zhǔn)確性的問題。5.決策樹決策樹是一個(gè)樹結(jié)構(gòu),其中每個(gè)非葉結(jié)點(diǎn)表示一個(gè)特征屬性上的判斷,每個(gè)分支代表這個(gè)特征屬性在某個(gè)值域上的輸出,而每個(gè)葉結(jié)點(diǎn)存放一個(gè)類別。使用決策樹進(jìn)行決策的過程就是從根結(jié)點(diǎn)開始,判斷待分類項(xiàng)中相應(yīng)的特征屬性,并按照其值選擇輸出分支,直到到達(dá)葉子結(jié)點(diǎn),將葉子結(jié)點(diǎn)對(duì)應(yīng)的類別作為決策結(jié)果。1.2.2回歸任務(wù)給定一個(gè)樣本特征,我們希望預(yù)測(cè)其對(duì)應(yīng)的屬性值。如果此屬性值是連續(xù)的,那么這就是一個(gè)回歸問題?;貧w任務(wù)預(yù)測(cè)目標(biāo)值最直接的辦法是依據(jù)輸入寫出一個(gè)目標(biāo)值的計(jì)算公式,該公式就是所謂的回歸方程(regressionequation),求回歸方程中的回歸系數(shù)的過程就是回歸,如圖1-5所示。1.2.2回歸任務(wù)線性回歸邏輯回歸嶺回歸0102031.2.2回歸任務(wù)1.線性回歸線性回歸是利用數(shù)理統(tǒng)計(jì)中的回歸分析來確定兩種或兩種以上變量間相互依賴的定量關(guān)系的一種統(tǒng)計(jì)分析方法。其中,只包括一個(gè)自變量和一個(gè)因變量,且二者的關(guān)系可用一條直線近似表示的回歸分析稱為一元線性回歸分析。如果包括兩個(gè)或兩個(gè)以上的自變量,且因變量和自變量之間是線性關(guān)系,則稱為多元線性回歸分析。1.2.2回歸任務(wù)2.邏輯回歸邏輯回歸在線性回歸的基礎(chǔ)上通過使用其固有的邏輯函數(shù)估計(jì)概率,來衡量因變量(想要預(yù)測(cè)的標(biāo)簽)與一個(gè)或多個(gè)自變量(特征)之間的關(guān)系。通常,邏輯回歸會(huì)將概率值壓縮到某一特定范圍。邏輯回歸一般用于需要明確輸出的場(chǎng)景,如預(yù)測(cè)是否會(huì)發(fā)生降雨。3.嶺回歸為了應(yīng)對(duì)線性回歸模型中基于最小二乘法的系數(shù)求解方法對(duì)輸入變量噪聲敏感及解不穩(wěn)定問題,對(duì)原目標(biāo)函數(shù)添加懲罰項(xiàng)以限制模型參數(shù)的數(shù)值大小。1.2.3聚類任務(wù)聚類(clustering)任務(wù)是在沒有給定劃分類別的情況下,根據(jù)樣本相似度進(jìn)行樣本分組的一種方法。聚類的輸入是針對(duì)一組未被標(biāo)記的樣本,聚類算法根據(jù)數(shù)據(jù)自身的距離或相似度將其劃分為若干組,劃分的原則是組內(nèi)距離最小化而組間距離最大化,如圖1-6所示。1.2.3聚類任務(wù)K-means聚類DBSCAN聚類譜聚類010203聚類和分類都是分析樣本的屬性,不同的是,分類在預(yù)測(cè)之前知道屬性的范圍,或者說知道到底有幾個(gè)類別,而聚類是不知道屬性的范圍的。所以,分類也常常被稱為監(jiān)督學(xué)習(xí)(supervisedlearning),而聚類就被稱為無監(jiān)督學(xué)習(xí)(unsupervisedlearning)。對(duì)于聚類任務(wù),當(dāng)前已有K-means聚類、DBSCAN聚類、譜聚類(spectralclustering)等方法被提出。1.2.3聚類任務(wù)1.K-means聚類K-means聚類是一種無監(jiān)督學(xué)習(xí)算法,此算法把N個(gè)點(diǎn)(可以是樣本的一次觀察或一個(gè)實(shí)例)劃分到K個(gè)集群(cluster),使得每個(gè)點(diǎn)都屬于離它最近的均值(聚類中心,centroid)對(duì)應(yīng)的集群。2.DBSCAN聚類具有噪聲的基于密度的聚類方法(densitybasedspatialclusteringofapplicationswithnoise,DBSCAN)是一種基于密度的空間聚類算法。該算法將具有足夠密度的區(qū)域劃分為簇,并在具有噪聲的空間數(shù)據(jù)庫(kù)中發(fā)現(xiàn)任意形狀的簇。1.2.3聚類任務(wù)3.譜聚類譜聚類是從圖論中演化出來的算法,后來在聚類中得到了廣泛的應(yīng)用。它的主要思想是把所有的數(shù)據(jù)看作空間中的點(diǎn),這些點(diǎn)之間可以用邊連接起來。距離較遠(yuǎn)的兩個(gè)點(diǎn)之間的邊權(quán)重值較低,而距離較近的兩個(gè)點(diǎn)之間的邊權(quán)重值較高,通過對(duì)所有數(shù)據(jù)點(diǎn)組成的圖進(jìn)行切圖,讓切圖后不同的子圖間邊權(quán)重和盡可能低,而子圖內(nèi)的邊權(quán)重和盡可能高,從而達(dá)到聚類的目的。1.2.4降維任務(wù)降維(dimensionalreduction)任務(wù)的目標(biāo)就是采用某種映射方法,將原高維空間中的數(shù)據(jù)點(diǎn)映射到低維空間中。之所以進(jìn)行數(shù)據(jù)降維,是因?yàn)樵谠嫉母呔S空間中包含冗余信息及噪聲信息,在實(shí)際應(yīng)用中會(huì)造成誤差,降低準(zhǔn)確率;希望通過降維減少冗余信息所造成的誤差,提高識(shí)別精度,后者通過降維算法來尋找數(shù)據(jù)內(nèi)部的本質(zhì)結(jié)構(gòu)特征。主成分分析01線性判別分析02多維尺度變換031.2.4降維任務(wù)1.主成分分析PCA降維是最常用的線性降維方法,它的目標(biāo)是通過某種線性投影,將高維的數(shù)據(jù)映射到低維的空間中表示,并期望在所投影的維度上數(shù)據(jù)的方差最大,以此使用較少的數(shù)據(jù)維度,同時(shí)保留住較多的原數(shù)據(jù)點(diǎn)的特性。也就是說,PCA追求的是在降維之后能夠最大化保持?jǐn)?shù)據(jù)的內(nèi)在信息,并通過衡量在投影方向上的數(shù)據(jù)方差的大小來衡量該方向的重要性。1.2.4降維任務(wù)2.線性判別分析LDA方法也稱fisherlineardiscriminant,是一種有監(jiān)督的線性降維算法。它通過將高維空間數(shù)據(jù)投影到低維空間來確定每個(gè)樣本所屬的類,這里考慮K個(gè)類的情況。它的目標(biāo)是將樣本能盡可能正確地分成K類,體現(xiàn)為同類樣本投影點(diǎn)盡可能近,不同類樣本點(diǎn)盡可能遠(yuǎn)。3.多維尺度變換MDS算法是一種經(jīng)典的降維方法,可以緩解在高維情形下出現(xiàn)的數(shù)據(jù)樣本稀疏和距離計(jì)算困難(維數(shù)災(zāi)難)等問題。MDS算法尋找高維數(shù)據(jù)到低維空間的投影,要求原始空間中樣本之間的距離在低維投影空間中得以保持。CONTENTS1.3典型數(shù)據(jù)領(lǐng)域與常見數(shù)據(jù)類型1.3典型數(shù)據(jù)領(lǐng)域與常見數(shù)據(jù)類型主成分分析線性判別分析01021.3.1典型數(shù)據(jù)領(lǐng)域醫(yī)療大數(shù)據(jù)在線網(wǎng)絡(luò)大數(shù)據(jù)金融大數(shù)據(jù)旅游大數(shù)據(jù)交通大數(shù)據(jù)1.3.1典型數(shù)據(jù)領(lǐng)域1.醫(yī)療大數(shù)據(jù)患者就醫(yī)過程產(chǎn)生的數(shù)據(jù)。制藥企業(yè)和生命科學(xué)產(chǎn)生的數(shù)據(jù)。例如患者的電子病歷、體征數(shù)據(jù)、化驗(yàn)數(shù)據(jù)、住院數(shù)據(jù),醫(yī)學(xué)影像數(shù)據(jù),醫(yī)生對(duì)患者的問診數(shù)據(jù),醫(yī)生對(duì)患者的臨床診治、用藥、手術(shù)等數(shù)據(jù)例如與用藥相關(guān)的用藥量、用藥時(shí)間、用藥成分、實(shí)驗(yàn)對(duì)象反應(yīng)時(shí)間、癥狀改善表象等數(shù)據(jù)1.3.1典型數(shù)據(jù)領(lǐng)域1.醫(yī)療大數(shù)據(jù)可穿戴設(shè)備帶來的健康數(shù)據(jù)。醫(yī)療研究和實(shí)驗(yàn)室數(shù)據(jù)。例如通過各種穿戴設(shè)備(手環(huán)、起搏器、眼鏡等)收集的人體的各種體征數(shù)據(jù)例如在藥物研制過程中進(jìn)行各種實(shí)驗(yàn)及不同適應(yīng)癥狀、副作用等數(shù)據(jù)1.3.1典型數(shù)據(jù)領(lǐng)域金融機(jī)構(gòu)在日常經(jīng)營(yíng)中各種應(yīng)用系統(tǒng)產(chǎn)生的數(shù)據(jù)。金融機(jī)構(gòu)在網(wǎng)上采集的企業(yè)輿情數(shù)據(jù)和個(gè)人行為數(shù)據(jù)。例如銀行卡數(shù)據(jù)、存貸款數(shù)據(jù)、客戶資產(chǎn)數(shù)據(jù)、個(gè)人信用數(shù)據(jù)等例如企業(yè)相關(guān)的司法、行政處罰及訴訟數(shù)據(jù),資產(chǎn)重組、投融資及產(chǎn)品數(shù)據(jù),個(gè)人學(xué)歷、職業(yè)數(shù)據(jù)等2.金融大數(shù)據(jù)1.3.1典型數(shù)據(jù)領(lǐng)域從第三方購(gòu)買的數(shù)據(jù)。例如從政府購(gòu)買的公積金、社保和稅務(wù)等公共數(shù)據(jù)2.金融大數(shù)據(jù)通過對(duì)以上數(shù)據(jù)的分析應(yīng)用,可以進(jìn)行貸款風(fēng)險(xiǎn)評(píng)估和交易欺詐檢測(cè),可以進(jìn)行理財(cái)推薦和精準(zhǔn)營(yíng)銷,可以進(jìn)行股價(jià)預(yù)測(cè),可以基于客戶細(xì)分開發(fā)符合客戶個(gè)性化需求的金融產(chǎn)品。1.3.1典型數(shù)據(jù)領(lǐng)域3.交通大數(shù)據(jù)交通大數(shù)據(jù)包括:基于公共交通部門發(fā)行交通卡收集的乘客出行數(shù)據(jù),如各時(shí)段、各路段的乘車人數(shù);交通管理部門在道路上預(yù)埋或預(yù)設(shè)物聯(lián)網(wǎng)傳感器收集的數(shù)據(jù),如車流量、客流量信息;通過衛(wèi)星地圖對(duì)城市道路的交通情況進(jìn)行分析得到道路交通的實(shí)時(shí)數(shù)據(jù);通過出租車車載終端或數(shù)據(jù)采集系統(tǒng)提供的實(shí)時(shí)數(shù)據(jù);基于智能手機(jī)中的地圖應(yīng)用產(chǎn)生的交通信息。通過對(duì)以上數(shù)據(jù)的分析應(yīng)用,可以感知城市道路擁堵情況,可以制定疏散和管制措施預(yù)案,從而提高道路管理能力,可以為用戶提供線路推薦服務(wù)。1.3.1典型數(shù)據(jù)領(lǐng)域4.旅游大數(shù)據(jù)旅游大數(shù)據(jù)包括城市的旅游景點(diǎn)數(shù)據(jù)、經(jīng)濟(jì)數(shù)據(jù)、氣象數(shù)據(jù)、人文數(shù)據(jù)等,景區(qū)的票務(wù)數(shù)據(jù)、旅游人數(shù)數(shù)據(jù)、監(jiān)控?cái)?shù)據(jù)等,酒店的在線預(yù)訂和入住數(shù)據(jù)、客戶信息及行為偏好數(shù)據(jù)等,旅游網(wǎng)站的旅游線路數(shù)據(jù)、旅游攻略數(shù)據(jù)、點(diǎn)評(píng)數(shù)據(jù)等,游客畫像、消費(fèi)數(shù)據(jù)、緊急調(diào)度數(shù)據(jù)等。通過對(duì)以上數(shù)據(jù)的分析應(yīng)用,可以進(jìn)行旅游推薦、安全提醒、旅游產(chǎn)品規(guī)劃、旅游廣告投放等服務(wù)。1.3.1典型數(shù)據(jù)領(lǐng)域5.在線網(wǎng)絡(luò)大數(shù)據(jù)在線網(wǎng)絡(luò)大數(shù)據(jù)包括社交平臺(tái)產(chǎn)生的社會(huì)關(guān)系數(shù)據(jù)、用戶生成數(shù)據(jù)、位置數(shù)據(jù)、個(gè)人偏好數(shù)據(jù)等,電商平臺(tái)產(chǎn)生的商品銷售數(shù)據(jù)、客戶消費(fèi)數(shù)據(jù)、促銷活動(dòng)數(shù)據(jù)等,視頻網(wǎng)站產(chǎn)生的視頻內(nèi)容數(shù)據(jù)、用戶觀看數(shù)據(jù)等,媒體平臺(tái)產(chǎn)生的新聞數(shù)據(jù)、用戶評(píng)論數(shù)據(jù)等,求職招聘平臺(tái)產(chǎn)生的企業(yè)招聘數(shù)據(jù)、個(gè)人簡(jiǎn)介數(shù)據(jù)、崗位薪酬數(shù)據(jù)等。通過對(duì)以上數(shù)據(jù)的分析應(yīng)用,可以進(jìn)行社會(huì)關(guān)系推薦、工作職位推薦、商業(yè)廣告投放、新聞消息推薦等服務(wù)。1.3.2常見數(shù)據(jù)類型結(jié)構(gòu)化數(shù)據(jù)半結(jié)構(gòu)化數(shù)據(jù)非結(jié)構(gòu)化數(shù)據(jù)0102031.3.2常見數(shù)據(jù)類型1.結(jié)構(gòu)化數(shù)據(jù)結(jié)構(gòu)化數(shù)據(jù)是能夠用二維表結(jié)構(gòu)來表達(dá)實(shí)現(xiàn)的數(shù)據(jù),如數(shù)字、符號(hào)等。在項(xiàng)目中,這些數(shù)據(jù)一般保存在數(shù)據(jù)庫(kù)中,其具有的明確關(guān)系使得這些數(shù)據(jù)運(yùn)用起來十分方便,不過,它們?cè)谏虡I(yè)上的可挖掘價(jià)值比較差。2.半結(jié)構(gòu)化數(shù)據(jù)半結(jié)構(gòu)化數(shù)據(jù)不符合關(guān)系型數(shù)據(jù)庫(kù)或其他數(shù)據(jù)模型結(jié)構(gòu),但包含用來分隔語(yǔ)義元素及對(duì)記錄和字段進(jìn)行分層的相關(guān)標(biāo)記。因此,它也被稱為自描述的結(jié)構(gòu)。在半結(jié)構(gòu)化數(shù)據(jù)中,屬性的個(gè)數(shù)、順序等都是不重要的,它們可以通過相關(guān)標(biāo)記進(jìn)行解釋,從而具有良好的擴(kuò)展性。常見的半結(jié)構(gòu)化數(shù)據(jù)有網(wǎng)頁(yè)、XML和JSON。1.3.2常見數(shù)據(jù)類型3.非結(jié)構(gòu)化數(shù)據(jù)非結(jié)構(gòu)化數(shù)據(jù)是數(shù)據(jù)結(jié)構(gòu)不規(guī)則或不完整,沒有預(yù)定義的數(shù)據(jù)模型,不方便用數(shù)據(jù)庫(kù)二維邏輯表來表現(xiàn)的數(shù)據(jù)。非結(jié)構(gòu)化數(shù)據(jù)包括所有格式的辦公文檔、文本、圖片、各類報(bào)表、圖像和音頻、視頻信息等。非結(jié)構(gòu)化數(shù)據(jù)的格式非常多樣,標(biāo)準(zhǔn)也是多樣性的,而且在技術(shù)上非結(jié)構(gòu)化信息比結(jié)構(gòu)化信息更難標(biāo)準(zhǔn)化。所以,存儲(chǔ)、檢索、發(fā)布及利用非結(jié)構(gòu)化數(shù)據(jù)需要更加智能化的IT技術(shù),如海量存儲(chǔ)、智能檢索、知識(shí)挖掘、內(nèi)容保護(hù)等。CONTENTS1.4數(shù)據(jù)分析的生態(tài)系統(tǒng)1.4數(shù)據(jù)分析的生態(tài)系統(tǒng)01020304分布式文件系統(tǒng)數(shù)據(jù)可視化工具機(jī)器學(xué)習(xí)與數(shù)據(jù)分析平臺(tái)分布式編程框架1.4.1分布式文件系統(tǒng)谷歌文件系統(tǒng)(Googlefilesystem,GFS)Hadoop分布式文件系統(tǒng)(Hadoopdistributedfilesystem,HDFS)Ceph分布式文件系統(tǒng)Lustre分布式文件系統(tǒng)1.4.1分布式文件系統(tǒng)1.谷歌文件系統(tǒng)(Googlefilesystem,GFS)GFS是Google為了滿足本公司需求而開發(fā)的基于Linux的專有分布式文件系統(tǒng)。盡管Google公布了該系統(tǒng)的一些技術(shù)細(xì)節(jié),但Google并沒有將該系統(tǒng)的軟件部分作為開源軟件發(fā)布。2.Hadoop分布式文件系統(tǒng)(Hadoopdistributedfilesystem,HDFS)HDFS是Hadoop的核心子項(xiàng)目,是一個(gè)可以運(yùn)行在普通硬件設(shè)備上的分布式文件系統(tǒng),是分布式計(jì)算中數(shù)據(jù)存儲(chǔ)和管理的基礎(chǔ),是基于流數(shù)據(jù)模式訪問和處理超大文件的需求而開發(fā)的。它所具有的高容錯(cuò)、高可靠性、高可擴(kuò)展性、高吞吐率等特征為海量數(shù)據(jù)提供了不怕故障的存儲(chǔ),給超大數(shù)據(jù)集的應(yīng)用處理帶來了很多便利。1.4.1分布式文件系統(tǒng)3.Ceph分布式文件系統(tǒng)Ceph是一個(gè)統(tǒng)一的分布式存儲(chǔ)系統(tǒng),設(shè)計(jì)初衷是提供較好的性能、可靠性和可擴(kuò)展性。Ceph項(xiàng)目最早起源于SageWeil就讀博士期間的工作(最早的成果于2004年發(fā)表),并隨后貢獻(xiàn)給開源社區(qū)。在經(jīng)過數(shù)年的發(fā)展之后,目前已得到眾多云計(jì)算廠商的支持并被廣泛應(yīng)用。RedHat及OpenStack都可與Ceph整合以支持虛擬機(jī)鏡像的后端存儲(chǔ)。4.Lustre分布式文件系統(tǒng)Lustre是一款開源的、基于對(duì)象存儲(chǔ)的集群并行分布式文件系統(tǒng),具有很高的擴(kuò)展性、可用性、易用性等,在高性能計(jì)算中應(yīng)用很廣泛,世界十大超級(jí)計(jì)算中心中的7個(gè)及超過50%的全球排名前50的超級(jí)計(jì)算機(jī)都在使用Lustre。Lustre可以支持上萬(wàn)個(gè)結(jié)點(diǎn),數(shù)以PB數(shù)量的存儲(chǔ)系統(tǒng)。1.4.2分布式編程框架MapReduce編程框架Spark編程框架Storm編程框架Petuum編程框架1.4.2分布式編程框架1.MapReduce編程框架MapReduce是一種編程模型,被廣泛應(yīng)用于大規(guī)模數(shù)據(jù)的處理中。2004年,Google發(fā)表了一篇論文,介紹了MapReduce編程框架。利用這款軟件框架,開發(fā)人員可以快速地編寫分布式應(yīng)用程序?,F(xiàn)今,該框架已被廣泛地應(yīng)用到日志分析、海量數(shù)據(jù)排序等任務(wù)中。MapReduce編程模式實(shí)際上是基于一種傳統(tǒng)的分治法而實(shí)現(xiàn)的。分治法將復(fù)雜問題分成多個(gè)類似的子問題,直到子問題的規(guī)模小到能直接得出結(jié)果,再聚合中間數(shù)據(jù)所得到的最終結(jié)果就是原問題的解。1.4.2分布式編程框架2.Spark編程框架Spark是UCBerkeleyAMP實(shí)驗(yàn)室開源的類HadoopMapReduce的通用的并行計(jì)算框架,Spark基于MapReduce算法實(shí)現(xiàn)分布式計(jì)算,擁有HadoopMapReduce所具有的優(yōu)點(diǎn);但不同于MapReduce的是,Spark中任務(wù)的輸出和結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此,Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的MapReduce的算法。1.4.2分布式編程框架3.Storm編程框架Storm是一款最早由BackType公司(現(xiàn)已被Twitter公司收購(gòu))開發(fā)的分布式實(shí)時(shí)計(jì)算系統(tǒng)。Storm為分布式實(shí)時(shí)計(jì)算提供了一組通用原語(yǔ),其用法與Hadoop極其類似,也被稱為實(shí)時(shí)計(jì)算版的Hadoop。它也可被用于流處理中,實(shí)現(xiàn)實(shí)時(shí)處理消息并更新數(shù)據(jù)庫(kù)。同時(shí)Storm可以采用任意編程語(yǔ)言編寫。1.4.2分布式編程框架4.Petuum編程框架Petuum是一個(gè)專門針對(duì)機(jī)器學(xué)習(xí)的分布式平臺(tái),它致力于提供一個(gè)超大型機(jī)器學(xué)習(xí)的通用算法和系統(tǒng)接口。它的出現(xiàn)主要解決兩類機(jī)器學(xué)習(xí)在規(guī)模上面臨的問題:大數(shù)據(jù)(大量的數(shù)據(jù)樣本)和大模型(大量的模型參數(shù))。Petuum能夠在集群和云計(jì)算(如AmazonEC2和GoogleGCE)上高效運(yùn)行。1.4.3機(jī)器學(xué)習(xí)與數(shù)據(jù)分析平臺(tái)1.scikit-learnScikit-learn是開源的Python機(jī)器學(xué)習(xí)庫(kù),最早由數(shù)據(jù)科學(xué)家DavidCournapeau于2007年發(fā)起,它基于NumPy和Scipy,提供了大量用于數(shù)據(jù)挖掘和分析的工具。Scikit-learn可以實(shí)現(xiàn)數(shù)據(jù)預(yù)處理、分類、回歸、降維、模型選擇等常用的機(jī)器學(xué)習(xí)算法。2.NetworkXNetworkX是Python的一個(gè)開源包,用于對(duì)復(fù)雜網(wǎng)絡(luò)進(jìn)行創(chuàng)建、操作和學(xué)習(xí)。利用NetworkX可以以標(biāo)準(zhǔn)化和非標(biāo)準(zhǔn)化的數(shù)據(jù)格式存儲(chǔ)網(wǎng)絡(luò)、生成多種隨機(jī)網(wǎng)絡(luò)和經(jīng)典網(wǎng)絡(luò)、分析網(wǎng)絡(luò)結(jié)構(gòu)、建立網(wǎng)絡(luò)模型、設(shè)計(jì)新的網(wǎng)絡(luò)算法、進(jìn)行網(wǎng)絡(luò)繪制等。1.4.4數(shù)據(jù)可視化工具1.MatplotlibMatplotlib是Python常用的數(shù)據(jù)繪制包,繪圖功能強(qiáng)大,可以輕易地畫出各種統(tǒng)計(jì)圖形,如散點(diǎn)圖、條形圖、餅狀圖等。Matplotlib包含兩個(gè)重要模塊Pylab和Pyplot。Pylab已經(jīng)幾乎實(shí)現(xiàn)了MATLAB所支持的所有繪圖功能,Pyplot在Pylab的基礎(chǔ)上支持?jǐn)?shù)學(xué)運(yùn)算套件NumPy,使用者可以直接調(diào)用NumPy函數(shù)做計(jì)算后進(jìn)行數(shù)據(jù)可視化。2.OrangeOrange的全部?jī)?nèi)容都是關(guān)于數(shù)據(jù)可視化,幫助發(fā)現(xiàn)隱藏的數(shù)據(jù)模式,提供數(shù)據(jù)分析過程背后的直覺或支持?jǐn)?shù)據(jù)科學(xué)家與領(lǐng)域?qū)<抑g的交流??梢暬翱谛〔考ㄉⅫc(diǎn)圖、箱形圖和直方圖,以及特定于模型的可視化,如樹狀圖、輪廓圖和樹可視化。許多其他可視化功能可用于附加組件,包括網(wǎng)絡(luò)、詞云、地理地圖等的可視化。CONTENTS1.5本書的內(nèi)容和組織1.5本書的內(nèi)容和組織本書將主要從算法的角度介紹數(shù)據(jù)分析所使用的主要技術(shù)和原理,對(duì)于經(jīng)典的數(shù)據(jù)分析算法,本書會(huì)配備大量的應(yīng)用實(shí)例。本書主要內(nèi)容為數(shù)據(jù)分析的基礎(chǔ)概念和基本技術(shù),對(duì)于有志于從事數(shù)據(jù)分析領(lǐng)域的讀者,本書可以作為一個(gè)很好的起點(diǎn)。我們將從Python編程語(yǔ)言(第2章)開始本書的技術(shù)討論。該章將為讀者介紹進(jìn)行數(shù)據(jù)分析應(yīng)用最廣泛的編程語(yǔ)言Python。通過此章的介紹,讀者能夠掌握Python語(yǔ)言的語(yǔ)法規(guī)則、編程規(guī)范、程序調(diào)試及異常處理方法,為進(jìn)行數(shù)據(jù)分析奠定編程基礎(chǔ)。第3章將詳細(xì)介紹數(shù)據(jù)分析的具體過程,教授讀者如何開展一個(gè)完整的數(shù)據(jù)分析項(xiàng)目。如何進(jìn)行數(shù)據(jù)準(zhǔn)備、如何快速地理解數(shù)據(jù)并選擇合適的模型算法,如何應(yīng)用統(tǒng)計(jì)學(xué)的相關(guān)方法進(jìn)行數(shù)據(jù)的描述性分析。1.5本書的內(nèi)容和組織數(shù)據(jù)分析的主要任務(wù),即回歸、聚類、分類和降維,將依次在第4章、第5章、第6章和第7章進(jìn)行介紹。各章的內(nèi)容主要包括基本概念、經(jīng)典算法的原理和實(shí)際步驟、算法的應(yīng)用實(shí)例,最后探討各個(gè)問題最新的前沿技術(shù)。本書的第8章將介紹社交網(wǎng)絡(luò)分析,包括對(duì)網(wǎng)絡(luò)中的結(jié)點(diǎn)進(jìn)行重要性排序、網(wǎng)絡(luò)鏈路預(yù)測(cè)方法、網(wǎng)絡(luò)結(jié)構(gòu)的社團(tuán)檢測(cè)及各自的評(píng)價(jià)指標(biāo)和實(shí)際應(yīng)用。第9章將詳細(xì)介紹數(shù)據(jù)可視化技術(shù),介紹如何基于Matplotlib可視化工具繪制各種數(shù)據(jù)圖表,讓讀者能夠更好地展示數(shù)據(jù)分析的結(jié)果。想一想:學(xué)習(xí)完本章內(nèi)容后,思考一下:(1)什么是數(shù)據(jù)分析?(2)典型的數(shù)據(jù)領(lǐng)域包括哪些?(3)常見的數(shù)據(jù)類型有哪些?感謝觀看第2章Python編程語(yǔ)言2.1初識(shí)Python2.2字符串與流程控制2.3列表、元組與字典2.4函數(shù)、模塊與包CONTENTS目錄2.5Python異常處理(1)知道什么是Python編程語(yǔ)言,并了解Python編程的基本規(guī)范。(2)了解Python編程環(huán)境的構(gòu)建方法。(3)學(xué)習(xí)Python典型的數(shù)據(jù)結(jié)構(gòu)。(4)了解函數(shù)、模塊和包。(5)理解Python的原理及其異常處理機(jī)制。學(xué)習(xí)目標(biāo)(1)Python編程的語(yǔ)法。(2)Python語(yǔ)言的變量與數(shù)據(jù)結(jié)構(gòu)。(3)Python語(yǔ)言中函數(shù)、模塊和包的構(gòu)建與使用方法。(4)Python編程的調(diào)試方法。學(xué)習(xí)重點(diǎn)CONTENTS2.1初識(shí)Python2.1初識(shí)Python常見的計(jì)算機(jī)編程語(yǔ)言分為兩類,即動(dòng)態(tài)編程語(yǔ)言和靜態(tài)編程語(yǔ)言。其中,動(dòng)態(tài)編程語(yǔ)言是使用變量前不需要聲明變量,在運(yùn)行期間才去做數(shù)據(jù)類型檢查的語(yǔ)言。編程時(shí),不用給變量指定數(shù)據(jù)類型,該語(yǔ)言會(huì)在第一次給變量賦值時(shí)在內(nèi)部將數(shù)據(jù)類型記錄下來。而靜態(tài)編程語(yǔ)言在使用變量前需要聲明變量,數(shù)據(jù)類型檢查發(fā)生在編譯階段,也就是說,在寫程序時(shí),要聲明變量的數(shù)據(jù)類型。例如,Java、C++、C、Go等語(yǔ)言就是靜態(tài)編程語(yǔ)言。本書使用的Python語(yǔ)言是一門具有靜態(tài)編程語(yǔ)言工程項(xiàng)目開發(fā)能力的動(dòng)態(tài)編程語(yǔ)言。想一想:Python、JavaScript、PHP、Ruby、Java、C++、C、Go等語(yǔ)言,哪些屬于動(dòng)態(tài)語(yǔ)言?哪些屬于靜態(tài)語(yǔ)言?2.1初識(shí)PythonPython是一種跨平臺(tái)的、開源的、免費(fèi)的、解釋型的高級(jí)編程語(yǔ)言,近幾年發(fā)展迅猛,在編程語(yǔ)言排行榜名列第一。Python的應(yīng)用領(lǐng)域非常廣泛,其中包括Web開發(fā)、大數(shù)據(jù)處理、云計(jì)算、機(jī)器學(xué)習(xí)、自動(dòng)化運(yùn)維、網(wǎng)絡(luò)爬蟲、游戲開發(fā)等,如圖2-1所示。Python語(yǔ)言與當(dāng)前其他編程語(yǔ)言相比有如下優(yōu)點(diǎn):學(xué)習(xí)簡(jiǎn)單、兼容性良好、面向?qū)ο?、自?dòng)內(nèi)存管理、第三方庫(kù)豐富。2.1初識(shí)Python01020304Python概述Python的基本數(shù)據(jù)類型Python語(yǔ)法特點(diǎn)Python環(huán)境搭建2.1.1Python概述Python是由荷蘭人GuidovanRossum于1991年發(fā)明的一種面向?qū)ο蟮慕忉屝透呒?jí)編程語(yǔ)言,其標(biāo)志如圖2-2所示。Python語(yǔ)言的設(shè)計(jì)哲學(xué)為優(yōu)雅、明確、簡(jiǎn)單,實(shí)際上,這門語(yǔ)言始終貫穿這一理念。Python語(yǔ)言的目標(biāo)是讓編程人員的主要精力用于思考程序的邏輯,而不是程序本身的實(shí)現(xiàn)細(xì)節(jié)。Python語(yǔ)言的提出受到了C語(yǔ)言、Shell語(yǔ)言、ABC語(yǔ)言等多種編程語(yǔ)言的影響,綜合了多種編程語(yǔ)言的特點(diǎn)和優(yōu)勢(shì)。Python語(yǔ)言的簡(jiǎn)單性、開放性、擴(kuò)展性,使它受到廣大程序員的歡迎,成為一個(gè)優(yōu)秀并廣泛使用的計(jì)算機(jī)編程語(yǔ)言。由于開源社區(qū)的貢獻(xiàn),Python語(yǔ)言通過標(biāo)準(zhǔn)庫(kù)及第三方包形成了功能強(qiáng)大的Python生態(tài)系統(tǒng)。2.1.2Python環(huán)境搭建為了在Windows上配置Python開發(fā)環(huán)境,首先須從Python的官方網(wǎng)站下載安裝包,下載地址為/downloads/windows/,如圖2-3所示。2.1.2Python環(huán)境搭建運(yùn)行下載的Python3.7.2.exe文件,在選擇安裝組件時(shí),選擇所有的組件,特別要注意選中“AddPython3.7toPATH”復(fù)選框,如圖2-4所示。然后連續(xù)單擊Next按鈕即可完成安裝,如圖2-5所示。2.1.2Python環(huán)境搭建選擇將Python安裝到C:\Python37目錄下,安裝完成后,打開命令提示符窗口,輸入Python并回車后,會(huì)出現(xiàn)兩種情況。情況一:看到圖2-6所示的界面,說明Python安裝成功,提示符“>>>”說明已經(jīng)在Python交互式環(huán)境中。輸入exit()并回車,退出Python交互式環(huán)境。情況二:得到一個(gè)錯(cuò)誤提示:“Python不是內(nèi)部或外部命令,也不是可運(yùn)行的程序或批處理文件?!边@說明Windows沒有找到對(duì)應(yīng)的可執(zhí)行程序,需要將Python添加到Path環(huán)境變量中。2.1.2Python環(huán)境搭建接下來進(jìn)行Python環(huán)境變量修改。右擊桌面上的計(jì)算機(jī)圖標(biāo),在彈出的快捷菜單中選擇“屬性”命令,打開“系統(tǒng)”窗口,在左側(cè)窗格中單擊“高級(jí)系統(tǒng)設(shè)置”鏈接,彈出“系統(tǒng)屬性”對(duì)話框,切換到“高級(jí)”選項(xiàng)卡,單擊“環(huán)境變量”按鈕,如圖2-7所示。2.1.2Python環(huán)境搭建隨即彈出“環(huán)境變量”對(duì)話框,在“系統(tǒng)變量”列表框中添加Python的安裝路徑,如圖2-8和圖2-9所示。2.1.2Python環(huán)境搭建在安裝Python編譯器之后,為了方便Python程序開發(fā),可以選擇安裝編輯器。常見的編輯器有SublimeText、Vim、PyCharm、文本編輯器等,我們選擇PyCharm作為Python編輯器,官網(wǎng)地址為/pycharm/。下載完成后,雙擊安裝程序,彈出圖2-10所示的界面。2.1.2Python環(huán)境搭建單擊Next按鈕,彈出ChooseInstallLocation界面,設(shè)置程序的安裝路徑,如圖2-11所示。單擊Next按鈕,開始安裝PyCharm,如圖2-12所示。2.1.2Python環(huán)境搭建完成PyCharm安裝的結(jié)果如圖2-13所示。想一想:

你還記得Java語(yǔ)言和C語(yǔ)言的環(huán)境搭建嗎?它們的環(huán)境搭建與Python的環(huán)境搭建有什么異同?2.1.2Python環(huán)境搭建打開PyCharm編輯器,在PyCharm中編寫Python代碼。首先,新建一個(gè)Python工程,執(zhí)行File→NewProject命令,確定工程的存儲(chǔ)位置和對(duì)應(yīng)的編譯器,如圖2-14和圖2-15所示。2.1.2Python環(huán)境搭建在工程上面右擊,然后在彈出的快捷菜單中執(zhí)行New→PythonFile命令,如圖2-16所示,創(chuàng)建一個(gè)新的Python文件。2.1.2Python環(huán)境搭建然后,在新建的Python文件中進(jìn)行編碼,完成需要的相關(guān)功能。對(duì)于完成編碼的Python文件,在文件名上右擊并選擇Run命令即可執(zhí)行文件,如圖2-17所示。在代碼執(zhí)行完畢之后,程序的執(zhí)行結(jié)果或者可能出現(xiàn)的相關(guān)錯(cuò)誤信息會(huì)出現(xiàn)在PyCharm界面下方的結(jié)果區(qū)域。在本實(shí)例中,按照程序要求輸入用戶名稱,然后程序執(zhí)行完畢輸出最終結(jié)果,如圖2-18和圖2-19所示。2.1.2Python環(huán)境搭建2.1.2Python環(huán)境搭建2.1.3Python語(yǔ)法特點(diǎn)Python注釋代碼縮進(jìn)編碼規(guī)范0102032.1.3Python語(yǔ)法特點(diǎn)1.Python注釋Python注釋是指在Python程序代碼中添加的標(biāo)注性文字,類似于產(chǎn)品的使用說明。當(dāng)程序被處理時(shí),這些注釋會(huì)被自動(dòng)忽略不會(huì)被當(dāng)作代碼處理。通過添加程序注釋,可以幫助我們理清代碼邏輯。在與別人合作進(jìn)行程序開發(fā)時(shí),添加注釋可以減少溝通成本。在Python模塊開發(fā)時(shí)添加注釋可以減少他人的使用成本。另外,在編碼過程中,可以臨時(shí)注釋一段代碼,方便調(diào)試。具體地,Python程序的注釋主要可分為以下三類。(1)單行注釋,即#,如以下代碼所示:1.#輸出人員名稱2.print("NanShan")2.1.3Python語(yǔ)法特點(diǎn)1.Python注釋(2)多行注釋,通常用'''、"""表示,將多行注釋文字放在這兩個(gè)標(biāo)識(shí)之間,或者在每行需要注釋的內(nèi)容之前加#,具體用法如以下代碼所示:1.注釋信息2."""注釋信息"""3.#在行首添加4.5.6.輸出人員名稱7.此處姓名是NanShan8.9.print("NanShan")2.1.3Python語(yǔ)法特點(diǎn)1.Python注釋(3)特殊注釋,包括解釋器說明和中文支持。在通過“./”執(zhí)行Python程序時(shí),在程序中應(yīng)指明解釋器的路徑,如以下代碼所示:1.#!/usr/bin/python2.print"你好,世界"Python程序中如果包含中文且未指定編碼,在執(zhí)行過程會(huì)出現(xiàn)語(yǔ)法報(bào)錯(cuò)“SyntaxError:NonASCIIcharacter”。2.1.3Python語(yǔ)法特點(diǎn)1.Python注釋實(shí)際上,Python中默認(rèn)的編碼格式是ASCII格式,在未修改編碼格式時(shí)無法正確打印漢字,所以在讀取中文時(shí)會(huì)報(bào)錯(cuò)。解決方法為只要在文件開頭加入#--coding:utf-8--或者#coding=utf-8就可以了。1.#!/usr/bin/python2.#--coding:utf-8--

3.print"你好,世界"想一想:

Python語(yǔ)言的注釋與其他語(yǔ)言的注釋有什么異同?2.1.3Python語(yǔ)法特點(diǎn)2.代碼縮進(jìn)在Python編程語(yǔ)言中,代碼縮進(jìn)是指在每一行代碼左端空出一定長(zhǎng)度的空白,從而可以更加清晰地從外觀上看出程序的邏輯結(jié)構(gòu)。具體地,在Python里不能用括號(hào)來表示語(yǔ)句塊;行首的空白(空格或制表符)用來決定邏輯行的縮進(jìn)層次,從而用來決定語(yǔ)句的分組;同一層次的語(yǔ)句必須有相同的縮進(jìn),每一組這樣的語(yǔ)句稱為一個(gè)塊。例如:1.__author__=taowu2.#--coding:utf-8--

3.#Filename:test.py2.1.3Python語(yǔ)法特點(diǎn)2.代碼縮進(jìn)4.#function:inputchecking5.6.num=float(input("輸入一個(gè)數(shù)字:"))7.ifnum>0:8.print("正數(shù)")9.elifnum==0:10.print("零")11.else:12.print("負(fù)數(shù)")2.1.3Python語(yǔ)法特點(diǎn)3.編碼規(guī)范除了注釋和代碼縮進(jìn)之外,Python程序還應(yīng)該遵守基本的編碼規(guī)范:(1)每個(gè)import語(yǔ)句只導(dǎo)入一個(gè)模塊,盡量避免一次導(dǎo)入多個(gè)模塊;(2)不要在行尾添加分號(hào)“;”,也不要用分號(hào)將兩條命令放在同一行;(3)運(yùn)算符兩側(cè)、函數(shù)參數(shù)之間、逗號(hào)“,”兩側(cè)建議使用空格進(jìn)行分隔;(4)建議每行不超過80個(gè)字符;(5)使用必要的空行可以增加代碼的可讀性;(6)適當(dāng)使用異常處理結(jié)構(gòu)提高程序容錯(cuò)性。做一做:

請(qǐng)嘗試用print函數(shù)在命令行窗口中輸出“我愛學(xué)Python!”2.1.4Python的基本數(shù)據(jù)類型0103050204數(shù)值類型布爾值運(yùn)算符數(shù)據(jù)類型轉(zhuǎn)換字符串2.1.4Python的基本數(shù)據(jù)類型1.數(shù)值類型(1)整型(int):正整數(shù)或負(fù)整數(shù),不帶小數(shù)點(diǎn)。(2)浮點(diǎn)型(float):由整數(shù)部分與小數(shù)部分組成。(3)復(fù)數(shù)(complex):由實(shí)數(shù)部分和虛數(shù)部分構(gòu)成,可以用a+bj或者complex(a,b)表示。數(shù)值類型支持加、減、乘、除等相關(guān)操作,同時(shí)Python整數(shù)運(yùn)算結(jié)果仍然是整數(shù),浮點(diǎn)數(shù)運(yùn)算結(jié)果仍然是浮點(diǎn)數(shù)。Python整數(shù)和浮點(diǎn)數(shù)混合運(yùn)算的結(jié)果就變成浮點(diǎn)數(shù)。整數(shù)除法,即使除不盡,結(jié)果仍然是整數(shù),余數(shù)直接被舍掉。相關(guān)運(yùn)算實(shí)例代碼如下:1.#!/usr/bin/python2.#--coding:utf-8--

3.4.1+2+3#==>65.4*5-6

#==>142.1.4Python的基本數(shù)據(jù)類型1.數(shù)值類型6.7.5/8+2.1#==>3.03757.8.#Python整數(shù)運(yùn)算結(jié)果仍然是整數(shù),浮點(diǎn)數(shù)運(yùn)算結(jié)果仍然是浮點(diǎn)數(shù)9.1+2

#==>整數(shù)310.1.0+2.0

#==>浮點(diǎn)數(shù)3.011.12.#整數(shù)和浮點(diǎn)數(shù)混合運(yùn)算的結(jié)果變成浮點(diǎn)數(shù)13.1+2.0

#==>浮點(diǎn)數(shù)3.014.15.#整數(shù)除法,即使除不盡,結(jié)果仍然是整數(shù),余數(shù)直接被舍掉16.11/4

#==>217.11%4

#==>32.1.4Python的基本數(shù)據(jù)類型2.字符串字符串是以或""括起來的任意文本,如abc,"xyz"等。注意,或""本身只是一種表示方式,不是字符串的一部分。字符串舉例說明如下:1.s=???2.print(s)

#==>???3.s="ImOK"4.print(s)

#==>ImOK2.1.4Python的基本數(shù)據(jù)類型3.布爾值布爾值和布爾代數(shù)的表示完全一致,一個(gè)布爾值只有True、False兩種值。注意,Python把0、空字符串和None看成False,其他數(shù)值和非空字符串都看成True。布爾值舉例說明如下:1.Flag1=True2.Flag2=False3.print(Flag1andFlag2)

#==>False2.1.4Python的基本數(shù)據(jù)類型4.數(shù)據(jù)類型轉(zhuǎn)換(1)int(x):將x轉(zhuǎn)換為一個(gè)整數(shù)。(2)float(x):將x轉(zhuǎn)換為一個(gè)浮點(diǎn)數(shù)。(3)str(x):將x轉(zhuǎn)換為一個(gè)字符串類型。(4)complex(x):將x轉(zhuǎn)換為一個(gè)復(fù)數(shù),實(shí)部為x,虛部為0。(5)complex(x,y):將x和y轉(zhuǎn)換為一個(gè)復(fù)數(shù),實(shí)部為x,虛部為y。(6)hex(x):將整數(shù)轉(zhuǎn)換為十六進(jìn)制字符串。(7)oct(x):將整數(shù)轉(zhuǎn)換為八進(jìn)制字符串。2.1.4Python的基本數(shù)據(jù)類型5.運(yùn)算符Python的基本運(yùn)算符包括算術(shù)運(yùn)算符、賦值運(yùn)算符、比較運(yùn)算符、邏輯運(yùn)算符和位運(yùn)算符。假設(shè)變量a的值是10,變量b的值是21,則應(yīng)用算術(shù)運(yùn)算符的示例如表2-1所示。2.1.4Python的基本數(shù)據(jù)類型5.運(yùn)算符假設(shè)變量a的值為10,變量b的值為20,則應(yīng)用賦值運(yùn)算符的示例如表2-2所示。2.1.4Python的基本數(shù)據(jù)類型5.運(yùn)算符假設(shè)變量a的值為10,變量b的值為20,則應(yīng)用比較運(yùn)算符的示例如表2-3所示。2.1.4Python的基本數(shù)據(jù)類型5.運(yùn)算符假設(shè)變量a的值為True,變量b的值為False,則應(yīng)用邏輯運(yùn)算符的示例如表2-4所示。2.1.4Python的基本數(shù)據(jù)類型5.運(yùn)算符假設(shè)變量a=60,b=13(a=00111100,b=00001101),則應(yīng)用位運(yùn)算符的示例如表2-5所示。CONTENTS2.2字符串與流程控制2.2字符串與流程控制字符串流程控制01022.2.1字符串0103050204拼接字符串截取字符串合并字符串分割字符串計(jì)算字符串長(zhǎng)度2.2.1字符串1.拼接字符串在Python中,使用“+”運(yùn)算符可完成多個(gè)字符串的拼接。例如:1.拼接字符串2.str1=我今天一共走了3.num=198884.str2=步5.print(str1+str(num)+str2)輸出“我今天一共走了19888步”。字符串不允許與其他類型的數(shù)據(jù)拼接,否則會(huì)報(bào)錯(cuò)。2.2.1字符串2.計(jì)算字符串長(zhǎng)度在Python中,使用len()函數(shù)可計(jì)算字符串的長(zhǎng)度。例如:1.字符串長(zhǎng)度2.str=我今天一共走了19888步3.length=len(str)4.print(length)輸出“13”。默認(rèn)情況下,不區(qū)分英文、數(shù)字和漢字,所有字符都按一個(gè)字符計(jì)算。但是,對(duì)于不同的編碼(UTF8,GBK),一個(gè)漢字會(huì)占不同的字節(jié)。2.2.1字符串3.截取字符串可以使用切片方法實(shí)現(xiàn)字符串的截取。語(yǔ)法格式如下:string[start:end:step]例如:1.str=我愛學(xué)Python!2.print(str)#我愛學(xué)Python!3.print(str[1])

#愛4.print(str[:5])

#我愛學(xué)Py5.print(str[5:])

#thon!2.2.1字符串4.分割字符串使用split()函數(shù)可實(shí)現(xiàn)字符串的分割。語(yǔ)法格式如下:str.split(sep,maxsplit)例如:1.str=我愛學(xué)>>>https://www.P/2.print(str.split())#[我,愛,學(xué),>>>,https://www.P/]3.print(str.split(>>>))#[我愛學(xué),https://www.P/]4.print(str.split(.))#[我愛學(xué)>>>https://www,Python,org/]2.2.1字符串5.合并字符串使用joint()函數(shù)可實(shí)現(xiàn)字符串的合并。語(yǔ)法格式如下:strnew=string.join(iterable)例如:1.goods=[番茄,土豆,南瓜]2.str_goods=|.join(goods)#用|進(jìn)行連接3.print(str_goods)#番茄|土豆|南瓜2.2.2流程控制在計(jì)算機(jī)編程語(yǔ)言中,程序的流程控制大致包括三種邏輯結(jié)構(gòu),即順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu),如圖2-20所示。具體地,順序結(jié)構(gòu)是指順序執(zhí)行程序中包含的所有語(yǔ)句;選擇結(jié)構(gòu)根據(jù)程序中的條件表達(dá)式進(jìn)行判斷,根據(jù)不同的結(jié)果執(zhí)行不同的語(yǔ)句塊;循環(huán)結(jié)構(gòu)是指在滿足條件表達(dá)式要求時(shí)多次循環(huán)執(zhí)行某段程序語(yǔ)句,然后在不滿足條件表達(dá)式要求時(shí)退出循環(huán)。由于順序結(jié)構(gòu)不需要任何流程控制語(yǔ)句,本節(jié)主要講解Python語(yǔ)言中與選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)相關(guān)的邏輯控制語(yǔ)句。選擇語(yǔ)句循環(huán)語(yǔ)句跳轉(zhuǎn)語(yǔ)句2.2.2流程控制(1)if…else…語(yǔ)句。一個(gè)if語(yǔ)句后可跟一個(gè)可選的else語(yǔ)句,如果布爾表達(dá)式為True,則執(zhí)行if塊內(nèi)的代碼。如果布爾表達(dá)式為False,則執(zhí)行else塊內(nèi)的代碼。例如:1.選擇語(yǔ)句1.name=NanShan2.ifname==Python:#判斷變量是否為Python3.print(IlikePython)#并輸出歡迎信息4.else:5.print(name)#條件不成立時(shí)輸出變量名稱2.2.2流程控制(2)if…elif…else語(yǔ)句。一個(gè)if語(yǔ)句后可跟可選的elif…else語(yǔ)句,這可用于測(cè)試多種條件。if語(yǔ)句之后可跟一個(gè)或多個(gè)elif…else語(yǔ)句,如果某一條件表達(dá)式為真,則執(zhí)行相應(yīng)的語(yǔ)句塊。只有在所有的條件表達(dá)式都為假的情況下,才會(huì)執(zhí)行else語(yǔ)句。例如:1.選擇語(yǔ)句1.num=52.ifnum==3:#判斷num的值3.print(administrator)4.elifnum==2:5.print(user)6.elifnum==1:7.print(guest)8.else:9.print(attacker)#條件均不成立時(shí)輸出2.2.2流程控制(1)while循環(huán)語(yǔ)句。通過一個(gè)條件來判斷是否要繼續(xù)執(zhí)行循環(huán)體,若條件為真則執(zhí)行,否則退出。例如:2.循環(huán)語(yǔ)句1.flag=True2.num=13.whileflag:#條件表達(dá)式14.print(Hello)5.num+=16.ifnum>4:#條件表達(dá)式27.flag=False2.2.2流程控制(2)for循環(huán)語(yǔ)句。for循環(huán)允許編寫一個(gè)執(zhí)行指定次數(shù)的循環(huán)控制結(jié)構(gòu),在達(dá)到指定次數(shù)之前,不斷執(zhí)行程序塊,并且在每次執(zhí)行之前進(jìn)行條件檢查。如果達(dá)到了指定的循環(huán)次數(shù),則退出。例如:2.循環(huán)語(yǔ)句1.forletterinPython:#第一個(gè)實(shí)例2.print(當(dāng)前字母:,letter)3.4.fruits=[banana,apple,mango]5.forfruitinfruits:#第二個(gè)實(shí)例6.print(當(dāng)前字母:,fruit)7.print("Goodbye!")2.2.2流程控制對(duì)于循環(huán)結(jié)構(gòu),除了基于while循環(huán)語(yǔ)句和for循環(huán)語(yǔ)句構(gòu)建循環(huán)邏輯之外,在滿足特定條件時(shí),需要直接退出循環(huán)或者跳過循環(huán)結(jié)構(gòu)中某一輪的執(zhí)行。因此,需要跳轉(zhuǎn)語(yǔ)句進(jìn)行Python循環(huán)結(jié)構(gòu)的邏輯控制。(1)break語(yǔ)句。其用于終止當(dāng)前循環(huán)(打破最小封閉for或while循環(huán))。例如:3.跳轉(zhuǎn)語(yǔ)句1.forletterinPython:#第一個(gè)實(shí)例2.ifletter==h:3.break4.print(當(dāng)前字母:,letter)想一想:Python語(yǔ)言中的break語(yǔ)句的功能與C語(yǔ)言中的break語(yǔ)句的功能有什么異同?2.2.2流程控制輸出結(jié)果:3.跳轉(zhuǎn)語(yǔ)句當(dāng)前字母:P當(dāng)前字母:y當(dāng)前字母:t(2)continue語(yǔ)句。其用于提前終止本次循環(huán)而進(jìn)入下一次循環(huán)中。例如:1.forletterinPython:2.ifletter==h:3.continue4.print(當(dāng)前字母:,letter)2.2.2流程控制輸出結(jié)果:3.跳轉(zhuǎn)語(yǔ)句當(dāng)前字母:P當(dāng)前字母:y當(dāng)前字母:t當(dāng)前字母:o當(dāng)前字母:n2.2.2流程控制(3)pass語(yǔ)句。其不做任何事情,僅起到占位作用,方便以后需要時(shí)進(jìn)行補(bǔ)充。例如:3.跳轉(zhuǎn)語(yǔ)句1.forletterinPython:2.ifletter==h:3.pass4.print(這是pass塊)5.print(當(dāng)前字母:,letter)6.print("Goodbye!")CONTENTS2.3列表、元組與字典2.3列表、元組與字典列表元組字典0102032.3.1列表列表是最常用的Python數(shù)據(jù)類型,其數(shù)據(jù)項(xiàng)不需要具有相同的類型。創(chuàng)建一個(gè)列表,只要把由逗號(hào)分隔的不同數(shù)據(jù)項(xiàng)用方括號(hào)括起來即可。如下所示:1.list1=[1,2,3,4,5];2.list2=["a","b","c","d"];遍歷列表添加、修改和刪除列表統(tǒng)計(jì)和計(jì)算排序2.3.1列表對(duì)列表中的每個(gè)元素進(jìn)行查詢和處理。例如:1.list=[sichuan,chongqing,guangdong,hunan]2.foriteminlist:3.print(item)1.遍歷列表輸出結(jié)果:sichuanchongqingguangdonghunan2.3.1列表可以通過append()函數(shù)在列表末尾添加元素。對(duì)于列表中的已有元素,可以通過索引直接進(jìn)行修改和刪除。例如:1.list=[sichuan,chongqing,guangdong,hunan]2.list.append(jiangsu)3.print(list)2.添加、修改和刪除列表輸出:

[sichuan,chongqing,guangdong,hunan,jiangsu]2.3.1列表1.list=[sichuan,chongqing,guangdong,hunan]2.list[0]=3.print(list)2.添加、修改和刪除列表輸出:[,chongqing,guangdong,hunan]2.3.1列表1.list=[sichuan,chongqing,guangdong,hunan]2.dellist[3]3.print(list)2.添加、修改和刪除列表輸出:[sichuan,chongqing,guangdong]2.3.1列表3.統(tǒng)計(jì)和計(jì)算通過count()獲取列表中指定元素的出現(xiàn)次數(shù),代碼如下:1.list=[sichuan,chongqing,sichuan,hunan]2.list.count(sichuan)通過index()獲取指定元素首次出現(xiàn)的下標(biāo),代碼如下:1.list=[sichuan,chongqing,sichuan,hunan]2.list.index(sichuan)通過sum()獲取數(shù)值列表的元素和,代碼如下:1.list=[10,10,10,10]2.print(sum(list))2.3.1列表4.排序使用列表對(duì)象的sort()方法改變?cè)剂斜碓氐呐帕许樞颍渲锌梢酝ㄟ^reverse參數(shù)設(shè)置排序規(guī)則,reverse等于True,則降序排列,否則升序排列。例如:1.char=[cat,Tom,Angela,pet]2.char.sort()3.print(char)輸出:

[Angela,Tom,cat,pet]2.3.1列表4.排序1.num=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論