版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第1章數(shù)據(jù)分析基礎全套可編輯PPT課件1.1數(shù)據(jù)分析的基本概念1.2數(shù)據(jù)分析的任務與方法1.3典型數(shù)據(jù)領域與常見數(shù)據(jù)類型1.4數(shù)據(jù)分析的生態(tài)系統(tǒng)CONTENTS目錄1.5本書的內容和組織(1)知道數(shù)據(jù)分析的定義,并了解數(shù)據(jù)分析范式。(2)了解數(shù)據(jù)分析所面臨的問題并能夠思考相應的解決方案。(3)理解數(shù)據(jù)分析的相關概念。(4)了解數(shù)據(jù)分析的任務和方法。(5)熟悉不同領域的數(shù)據(jù)類型與常見數(shù)據(jù)類型。(6)熟悉數(shù)據(jù)分析的生態(tài)系統(tǒng)。學習目標(1)數(shù)據(jù)分析的定義。(2)數(shù)據(jù)分析范式。(3)數(shù)據(jù)分析的任務與方法。(4)數(shù)據(jù)分析的生態(tài)系統(tǒng)。學習重點CONTENTS1.1數(shù)據(jù)分析的基本概念01020304數(shù)據(jù)分析的定義相關概念辨析數(shù)據(jù)分析面臨的問題1.1數(shù)據(jù)分析的基本概念數(shù)據(jù)分析范式1.1數(shù)據(jù)分析的基本概念理解數(shù)據(jù)分析的基礎是了解數(shù)據(jù)。從概念而言,大數(shù)據(jù)(bigdata)是1998年由SGI(美國硅圖公司)首席科學家JohnMashey在USENIX說明大會上提出的。他當時發(fā)表了一篇名為BigDataandtheNextWaveofInfraStress的論文,使用了大數(shù)據(jù)來描述數(shù)據(jù)爆炸的現(xiàn)象。根據(jù)百度百科的定義,大數(shù)據(jù)是指無法在一定時間范圍內用常規(guī)軟件工具進行捕捉、管理和處理的數(shù)據(jù)集合,是需要新處理模式才能具有更強的決策力、洞察力和流程優(yōu)化能力的海量、高增長率和多樣化的信息資產。在2015年《促進大數(shù)據(jù)發(fā)展行動綱要》中,大數(shù)據(jù)是指以容量大、類型多、存取速度快、應用價值高為主要特征的數(shù)據(jù)集合,正快速發(fā)展為對數(shù)量巨大、來源分散、格式多樣的數(shù)據(jù)進行采集、存儲和關聯(lián)分析,從中發(fā)現(xiàn)新知識、創(chuàng)造新價值、提升新能力的新一代信息技術和服務業(yè)態(tài)。想一想:你能舉出大數(shù)據(jù)應用的示例嗎?0103050204volume(大量)variety(多樣)veracity(真實性)value(低價值密度)velocity(高速)1.1數(shù)據(jù)分析的基本概念IBM提出大數(shù)據(jù)具有5V特點。1.1.1數(shù)據(jù)分析的定義數(shù)據(jù)分析(dataanalysis)是指將各種算法應用于大量的、有噪聲的、不完全的實際數(shù)據(jù)中,提取隱含在其中的、人們事先不知道的有用信息和知識的實踐過程。各種算法包括來自統(tǒng)計學中的抽樣、估計及假設檢驗,也包括機器學習、模式識別等領域的建模技術和學習理論。通過數(shù)據(jù)分析,可以發(fā)現(xiàn)個體對象的特征性質、類別分布,也可以預測個體對象未來的觀測結果。數(shù)據(jù)分析為科學研究、社會管理、工業(yè)生產等提供了一種新的方法,其目的在于揭示自然現(xiàn)象與人類社會背后隱藏的特性和規(guī)律。對實際數(shù)據(jù)進行探索、提取知識的過程一般包括數(shù)據(jù)預處理、數(shù)據(jù)分析、后處理等步驟,如圖1-1所示。1.1.1數(shù)據(jù)分析的定義數(shù)據(jù)分析主要涉及三個方面的內容:數(shù)據(jù)分析理論、數(shù)據(jù)分析技術和數(shù)據(jù)分析實踐,如圖1-2所示。其中,數(shù)據(jù)分析理論是指人們對數(shù)據(jù)及數(shù)據(jù)資源利用相關的對象、價值及影響進行思考而產生的認知。通過分析累積的海量數(shù)據(jù),能夠實現(xiàn)客戶群體細分、工作效率提高及業(yè)務模式創(chuàng)新等,從而極大地促進經濟社會發(fā)展。1.1.1數(shù)據(jù)分析的定義在此過程中,隨著數(shù)據(jù)分析應用的逐漸深入及數(shù)據(jù)類型的多樣化和復雜化,數(shù)據(jù)分析的實踐形態(tài)和主要目標也會逐步演化。以上活動需要根據(jù)其特點進行抽象提取,從而構建數(shù)據(jù)分析過程的知識體系。例如,數(shù)據(jù)分析將來可能不再局限于從數(shù)據(jù)中提取有價值的信息這一任務,由數(shù)據(jù)分析引起的數(shù)據(jù)隱私、數(shù)據(jù)產權、數(shù)據(jù)資源共享與管理等將成為新的理論焦點;數(shù)據(jù)分析技術是指數(shù)據(jù)分析實施過程依賴的技術方法,包括數(shù)據(jù)存儲、算法模型、分布式平臺及云計算等。1.1.1數(shù)據(jù)分析的定義數(shù)據(jù)分析技術是落實數(shù)據(jù)分析理論的保障。根據(jù)現(xiàn)實應用的業(yè)務場景,需要具備在不同數(shù)據(jù)分布、分析效率及任務要求條件下進行數(shù)據(jù)分析的技術方法。例如,除了數(shù)據(jù)資源、算法模型之外,大規(guī)模數(shù)據(jù)分析實踐往往還需要存儲環(huán)境、計算平臺等;數(shù)據(jù)分析實踐是將數(shù)據(jù)分析技術與累積的海量數(shù)據(jù)相結合,產生有價值的信息、知識的具體過程。此過程往往與實際數(shù)據(jù)質量、業(yè)務場景等緊密相關,當前的數(shù)據(jù)分析實踐主要可以分為個人數(shù)據(jù)分析實踐、企業(yè)數(shù)據(jù)分析實踐、政府數(shù)據(jù)分析實踐和互聯(lián)網(wǎng)數(shù)據(jù)分析實踐四類。實際上,數(shù)據(jù)分析理論是數(shù)據(jù)分析技術和數(shù)據(jù)分析實踐的基礎和指導,數(shù)據(jù)分析技術是數(shù)據(jù)分析理論在實際業(yè)務場景下的實現(xiàn)途徑,數(shù)據(jù)分析實踐是基于數(shù)據(jù)分析理論和數(shù)據(jù)分析技術體現(xiàn)數(shù)據(jù)價值的最終過程。1.1.2數(shù)據(jù)分析范式數(shù)據(jù)分析的總體目標是在已有數(shù)據(jù)集的基礎上,通過特定的算法提取信息,并將信息轉化為可理解的知識,從而輔助決策。任何實際的數(shù)據(jù)分析過程都是重復這一數(shù)據(jù)分析的工作范式,如圖1-3所示。1.1.2數(shù)據(jù)分析范式具體來說,數(shù)據(jù)(data)是使用約定俗成的關鍵詞,對客觀事物的數(shù)量、屬性、位置及其相互關系進行抽象表示,以適合在當前的領域中用人工或自然的方式進行保存、傳遞和處理。例如,通過高度20m、寬度80m、共3層這些數(shù)據(jù)便描述了客觀世界建筑物在人們大腦中的印象;信息(information)來源于數(shù)據(jù),但高于數(shù)據(jù)。信息是指具有時效性的、有一定含義的、有邏輯的、經過加工處理的、對決策有價值的數(shù)據(jù)流;信息雖給出了數(shù)據(jù)中一些有一定意義的東西,但它的價值往往會在時間效用失效后開始衰減,只有通過人們的參與,對信息進行歸納、演繹、比較等處理,使其有價值的部分沉淀下來,并與已存在的人類知識體系相結合,這部分有價值的信息就轉變成知識(knowledge),即知識就是沉淀并與已有人類知識庫進行結構化的有價值信息;決策(decision)是指在獲取知識的基礎上,根據(jù)實際業(yè)務場景采取有效行動從而提高收益的具體過程。1.1.2數(shù)據(jù)分析范式以商品房銷售為例,數(shù)據(jù)是指銷售過程中交易行為的直接記錄,包括房屋位置、房屋面積、房屋類型、交易時間、成交價格等;基于以上原始記錄,通過對數(shù)據(jù)進行處理,得出類似“201×年×月北京市朝陽區(qū)商品房銷售價格同比上漲×%”的結論,即為獲得信息;人們通過對以上類似的信息進行歸納、演繹、比較等處理,使其有價值的部分沉淀下來,并與已存在的人類知識體系相結合,這些有價值的信息就轉變成知識,即類似“由于土地供應有限,人口迅速增加,北京市商品房交易價格總體上處于并將繼續(xù)處于上漲態(tài)勢”;在以上數(shù)據(jù)分析的基礎上,人們基于獲得的知識進行最終的投資決策,即“通過購置房產以獲得較高的投資回報”。以上即為通過房屋交易記錄處理,最終輔助決策的數(shù)據(jù)分析過程。想一想:你還能說出其他的例子嗎?1.1.3數(shù)據(jù)分析面臨的問題0103050204可伸縮性異構及復雜數(shù)據(jù)隱私保護數(shù)據(jù)分布高維性1.1.3數(shù)據(jù)分析面臨的問題1.可伸縮性由于數(shù)據(jù)分析任務中實際數(shù)據(jù)量的巨大差異,要求數(shù)據(jù)分析的模型算法能夠處理大數(shù)據(jù)集,且時間復雜度不能太高,消耗的內存空間也有限,即必須是可伸縮(scalable)的。為了實現(xiàn)可伸縮的數(shù)據(jù)分析,研究人員已經進行了許多有益的嘗試,包括增量式方法、數(shù)據(jù)采樣方法、數(shù)據(jù)壓縮方法、分布式算法、并行框架等。1.1.3數(shù)據(jù)分析面臨的問題2.高維性傳統(tǒng)的數(shù)據(jù)集一般只有少量的屬性,然而,大數(shù)據(jù)時代數(shù)據(jù)集的屬性往往是成百上千的。由于數(shù)據(jù)采集技術的進步,同樣的對象可以通過更多傳感器從更加豐富的角度進行感知刻劃,從而導致數(shù)據(jù)維度增加。隨著數(shù)據(jù)維度的增加,可能的組合數(shù)量也隨之上升,樣本在屬性空間中變得稀疏,從而很可能產生無意義的分析結果。如果持續(xù)增加維度,訓練數(shù)據(jù)需要指數(shù)級的增加才能避免過擬合。另外,維度增加會導致計算機內存消耗巨大、計算時間延長。而且,在高維空間中,樣本距離的度量失去意義,會影響K-means、KNN(K-nearestneighbor,K近鄰算法)等基于距離計算的方法的精度和性能。1.1.3數(shù)據(jù)分析面臨的問題3.異構及復雜數(shù)據(jù)傳統(tǒng)數(shù)據(jù)分析任務中的數(shù)據(jù)類型主要包括文本、圖像、數(shù)字、語音信號等,通過聚類、分類等發(fā)現(xiàn)其蘊含的模式和語義。隨著數(shù)量采集技術的發(fā)展和數(shù)據(jù)分析在各個領域的廣泛應用,數(shù)據(jù)類型越來越復雜。例如,由于在線社交網(wǎng)絡的興起,同時包含文本、圖片、關系鏈的多媒體信息對于知識挖掘變得愈發(fā)重要。另外,刻劃個體及其之間相互關聯(lián)關系的圖數(shù)據(jù)也成為大數(shù)據(jù)中的一種重要數(shù)據(jù)類型。隨著定位技術和移動互聯(lián)網(wǎng)的發(fā)展,車輛及行人軌跡數(shù)據(jù)的量級也在迅猛增長。為了挖掘這些復雜數(shù)據(jù)對象,需要開發(fā)與數(shù)據(jù)特征相適應的新型數(shù)據(jù)分析方法。1.1.3數(shù)據(jù)分析面臨的問題4.數(shù)據(jù)分布隨著數(shù)據(jù)采集技術的進步,生成的數(shù)據(jù)量往往十分巨大。所以,構建集中的數(shù)據(jù)存儲空間是極具挑戰(zhàn)性的。而且,由于網(wǎng)絡數(shù)據(jù)傳輸帶寬的限制,海量數(shù)據(jù)傳輸?shù)暮臅r也難以接受。例如,當前無處不在的監(jiān)控攝像頭雖然記錄了大量視頻監(jiān)控數(shù)據(jù),但是實際上是無法進行集中統(tǒng)一分析的,這些數(shù)據(jù)是在各個區(qū)域分散保存的。另外,由于數(shù)據(jù)所有權的問題,數(shù)據(jù)分析任務可以擁有數(shù)據(jù)的使用權,但沒有數(shù)據(jù)的所有權。因此,只能通過遠程訪問進行數(shù)據(jù)分析。所以,實際數(shù)據(jù)常常處于不同地理位置及不同機構中,大數(shù)據(jù)的資源利用要求開發(fā)分布式的數(shù)據(jù)分析技術。1.1.3數(shù)據(jù)分析面臨的問題5.隱私保護由于實際數(shù)據(jù)中經常包含用戶隱私信息,直接基于這個數(shù)據(jù)進行分析挖掘會泄露用戶隱私。因此,需要在操作、分析這些數(shù)據(jù)的同時保護用戶隱私。當前,研究人員已開始關注密文可搜索機制、支持隱私保護的數(shù)據(jù)聚類等研究。舉個例子醫(yī)療機構積累了大量醫(yī)療數(shù)據(jù),通過對這些數(shù)據(jù)進行分析,可能優(yōu)化疾病的治療效果、提高疾病的治愈率。然而,通過專業(yè)機構進行醫(yī)療數(shù)據(jù)分析需要考慮患者的隱私問題,需要使用保障數(shù)據(jù)安全的數(shù)據(jù)分析方法。1.1.4相關概念辨析為了分析處理來自各個領域、面向不同需求的數(shù)據(jù)處理任務,研究人員和工程師提出了很多相互聯(lián)系但又有所差異的概念和定義。首先,數(shù)據(jù)必須保存在存儲空間中才能夠進行數(shù)據(jù)分析,數(shù)據(jù)庫是保存數(shù)據(jù)的主要形式。由于數(shù)據(jù)規(guī)模大、存儲位置比較分散,為了提高計算效率,數(shù)據(jù)分析常常依賴于并行計算和分布式計算框架。為了能夠讓計算機擁有人的能力從而實現(xiàn)人工智能,研究人員提出了許多利用經驗數(shù)據(jù)的學習算法,即機器學習。1.1.4相關概念辨析機器學習的理論基礎主要是統(tǒng)計學,為了能夠從數(shù)據(jù)中提取有用的知識,數(shù)據(jù)分析經常需要采用機器學習方法。從而,數(shù)據(jù)分析可以被視為機器學習與數(shù)據(jù)庫的交叉,利用機器學習領域提供的技術分析海量數(shù)據(jù),利用數(shù)據(jù)庫領域的技術進行海量數(shù)據(jù)的管理。同時,機器學習一般指實現(xiàn)數(shù)據(jù)建模學習的相關算法,數(shù)據(jù)分析主要指從數(shù)據(jù)中提取有用知識的過程。數(shù)據(jù)分析除包括相關建模學習算法之外,還包括數(shù)據(jù)清洗、描述性分析等步驟。或者,機器學習注重相關機器學習算法的理論研究和算法提升,數(shù)據(jù)挖掘注重運用算法或其他某種模式來解決實際問題。1.1.4相關概念辨析機器學習為數(shù)據(jù)挖掘提供解決實際問題的方法,數(shù)據(jù)挖掘中算法的成功應用,說明了機器學習對算法的研究具有實際運用價值。在數(shù)據(jù)分析和機器學習算法的形成過程中,還吸收了來自其他領域的思想,包括最優(yōu)化、進化計算、信息論和信號處理。信息檢索指從數(shù)據(jù)集合或數(shù)據(jù)接口中查找個別記錄的過程,主要依賴于數(shù)據(jù)的明顯特征來創(chuàng)建索引結構,從而有效地組織和檢索信息。1.1.4相關概念辨析數(shù)據(jù)分析與機器學習的發(fā)展不是孤立的,是被廣泛應用于各個領域、與各個領域的發(fā)展共同成長的。例如,機器學習在視覺領域的應用形成了計算機視覺(computationalvision)方向。計算機視覺通過采集圖片或視頻,對圖片或視頻進行處理分析,從中獲取相對應的信息。換而言之,就是運用照相機和計算機來獲取我們所需的信息。另外,機器學習在漢語、英語、法語等自然語言領域的應用形成了自然語言處理(naturallanguageprocessing)方向。自然語言處理,簡單來說就是計算機接收用戶自然語言形式的輸入,并在內部通過人類所定義的算法進行加工、計算等一系列操作,以模擬人類對自然語言的理解,并返回用戶所期望的結果。隨著互聯(lián)網(wǎng)、在線社交網(wǎng)絡、生物信息網(wǎng)絡等的興起,世界萬物變得愈發(fā)相互關聯(lián),從而形成了以頂點及頂點間的邊為結構的大規(guī)模圖數(shù)據(jù)。1.1.4相關概念辨析機器學習在圖數(shù)據(jù)分析領域的應用形成了圖計算(graphcomputing)方向。圖計算就是主要針對結點關系型數(shù)據(jù),研究在這樣的數(shù)據(jù)上進行高效的檢索、分類、聚類、預測等任務。圖1-4展示了數(shù)據(jù)分析與其他領域之間的關系。CONTENTS1.2數(shù)據(jù)分析的任務與方法1.2數(shù)據(jù)分析的任務與方法在數(shù)據(jù)分析挖掘之前,首先需要確定任務目標、理解如何從數(shù)據(jù)分析結果中受益。然后收集需要的數(shù)據(jù),并進行數(shù)據(jù)清洗、集成和轉換等數(shù)據(jù)準備工作。在進行數(shù)據(jù)分析建模之前,需要深入地探索理解數(shù)據(jù),了解各屬性元素之間的相互作用,熟悉數(shù)據(jù)的分布及特征。最后進行數(shù)據(jù)分析建模,對數(shù)據(jù)的分析結果進行展示和應用。所以,數(shù)據(jù)分析挖掘總體上包括如下六個階段。(1)確定目標。(2)數(shù)據(jù)收集。(3)數(shù)據(jù)準備。(4)數(shù)據(jù)探索。(5)數(shù)據(jù)建模。(6)展示應用。1.2數(shù)據(jù)分析的任務與方法另外,數(shù)據(jù)分析挖掘過程中數(shù)據(jù)的建模學習也需要多個步驟,具體包括以下幾個方面。(1)選擇數(shù)據(jù):將數(shù)據(jù)分成訓練數(shù)據(jù)、驗證數(shù)據(jù)和測試數(shù)據(jù)。(2)模型學習:使用訓練數(shù)據(jù)來構建基于相關特征的模型。(3)驗證模型:使用驗證數(shù)據(jù)直接進行模型評價。(4)測試模型:使用測試數(shù)據(jù)檢查被驗證的模型的性能表現(xiàn)。(5)調優(yōu)模型:使用更多數(shù)據(jù)、不同的特征或不同的參數(shù)取值來提升
算法的性能表現(xiàn)。01020304分類任務降維任務聚類任務1.2數(shù)據(jù)分析的任務與方法回歸任務根據(jù)數(shù)據(jù)集中其他屬性的取值預測特定屬性的取值,或者根據(jù)歷史樣本數(shù)據(jù)預測當前及未來樣本的取值的過程即為預測(prediction)建模。預測建模的目標是訓練一個模型,使目標變量預測值與實際值之間的誤差達到最小。實際上,用于預測離散目標變量的分類(classification)任務,以及用于預測連續(xù)目標變量的回歸(regression)任務都屬于預測建模。面對各種各樣的數(shù)據(jù)分析需求,當前主要的數(shù)據(jù)分析建模算法按學習結果可分為分類、回歸、聚類和降維四個任務。1.2.1分類任務樸素貝葉斯K近鄰算法決策樹人工神經網(wǎng)絡支持向量機1.2.1分類任務1.樸素貝葉斯樸素貝葉斯是基于貝葉斯定理與特征條件獨立假設的分類方法,發(fā)源于古典數(shù)據(jù)理論,擁有穩(wěn)定的數(shù)學基礎和分類效率。它是一種十分簡單的分類算法,通過對給出的待分類項求解各項類別的出現(xiàn)概率大小,來判斷此待分類項屬于哪個類別。貝葉斯適用于特征之間的相互獨立的場景,如利用花瓣的長度和寬度來預測花的類型?!皹闼亍钡膬群梢岳斫鉃樘卣骱吞卣髦g獨立性強。樸素貝葉斯在文本分類問題中會有很好的效果,常被用于垃圾郵件過濾、醫(yī)療診斷中。1.2.1分類任務2.支持向量機支持向量機是一種監(jiān)督式學習方法,可廣泛應用于統(tǒng)計分類及回歸分析。支持向量機屬于一般化線性分類器,它能夠同時最小化經驗誤差和最大化幾何邊緣,因此,支持向量機也被稱為最大邊緣分類器。3.K近鄰算法KNN是一個比較簡單的分類、預測算法。首先選取與待分類數(shù)據(jù)最相似的K個訓練數(shù)據(jù),然后通過對這K個數(shù)據(jù)的結果或分類標號進行取均值、取眾數(shù)等方法得到待分類、待預測數(shù)據(jù)的結果或分類標號。1.2.1分類任務4.人工神經網(wǎng)絡人工神經網(wǎng)絡是一種模仿生物神經網(wǎng)絡結構和功能的數(shù)學模型或計算模型,用于對函數(shù)進行估計或近似。人工神經網(wǎng)絡通過大量的人工神經元聯(lián)結進行計算,通過在外界信息的基礎上修正內部結構和連接權值實現(xiàn)學習過程,是一種自適應系統(tǒng)。人工神經網(wǎng)絡在語音、圖片、視頻、游戲等各類應用場景展現(xiàn)出優(yōu)異的性能,但是存在需要大量的數(shù)據(jù)進行訓練來提高準確性的問題。5.決策樹決策樹是一個樹結構,其中每個非葉結點表示一個特征屬性上的判斷,每個分支代表這個特征屬性在某個值域上的輸出,而每個葉結點存放一個類別。使用決策樹進行決策的過程就是從根結點開始,判斷待分類項中相應的特征屬性,并按照其值選擇輸出分支,直到到達葉子結點,將葉子結點對應的類別作為決策結果。1.2.2回歸任務給定一個樣本特征,我們希望預測其對應的屬性值。如果此屬性值是連續(xù)的,那么這就是一個回歸問題?;貧w任務預測目標值最直接的辦法是依據(jù)輸入寫出一個目標值的計算公式,該公式就是所謂的回歸方程(regressionequation),求回歸方程中的回歸系數(shù)的過程就是回歸,如圖1-5所示。1.2.2回歸任務線性回歸邏輯回歸嶺回歸0102031.2.2回歸任務1.線性回歸線性回歸是利用數(shù)理統(tǒng)計中的回歸分析來確定兩種或兩種以上變量間相互依賴的定量關系的一種統(tǒng)計分析方法。其中,只包括一個自變量和一個因變量,且二者的關系可用一條直線近似表示的回歸分析稱為一元線性回歸分析。如果包括兩個或兩個以上的自變量,且因變量和自變量之間是線性關系,則稱為多元線性回歸分析。1.2.2回歸任務2.邏輯回歸邏輯回歸在線性回歸的基礎上通過使用其固有的邏輯函數(shù)估計概率,來衡量因變量(想要預測的標簽)與一個或多個自變量(特征)之間的關系。通常,邏輯回歸會將概率值壓縮到某一特定范圍。邏輯回歸一般用于需要明確輸出的場景,如預測是否會發(fā)生降雨。3.嶺回歸為了應對線性回歸模型中基于最小二乘法的系數(shù)求解方法對輸入變量噪聲敏感及解不穩(wěn)定問題,對原目標函數(shù)添加懲罰項以限制模型參數(shù)的數(shù)值大小。1.2.3聚類任務聚類(clustering)任務是在沒有給定劃分類別的情況下,根據(jù)樣本相似度進行樣本分組的一種方法。聚類的輸入是針對一組未被標記的樣本,聚類算法根據(jù)數(shù)據(jù)自身的距離或相似度將其劃分為若干組,劃分的原則是組內距離最小化而組間距離最大化,如圖1-6所示。1.2.3聚類任務K-means聚類DBSCAN聚類譜聚類010203聚類和分類都是分析樣本的屬性,不同的是,分類在預測之前知道屬性的范圍,或者說知道到底有幾個類別,而聚類是不知道屬性的范圍的。所以,分類也常常被稱為監(jiān)督學習(supervisedlearning),而聚類就被稱為無監(jiān)督學習(unsupervisedlearning)。對于聚類任務,當前已有K-means聚類、DBSCAN聚類、譜聚類(spectralclustering)等方法被提出。1.2.3聚類任務1.K-means聚類K-means聚類是一種無監(jiān)督學習算法,此算法把N個點(可以是樣本的一次觀察或一個實例)劃分到K個集群(cluster),使得每個點都屬于離它最近的均值(聚類中心,centroid)對應的集群。2.DBSCAN聚類具有噪聲的基于密度的聚類方法(densitybasedspatialclusteringofapplicationswithnoise,DBSCAN)是一種基于密度的空間聚類算法。該算法將具有足夠密度的區(qū)域劃分為簇,并在具有噪聲的空間數(shù)據(jù)庫中發(fā)現(xiàn)任意形狀的簇。1.2.3聚類任務3.譜聚類譜聚類是從圖論中演化出來的算法,后來在聚類中得到了廣泛的應用。它的主要思想是把所有的數(shù)據(jù)看作空間中的點,這些點之間可以用邊連接起來。距離較遠的兩個點之間的邊權重值較低,而距離較近的兩個點之間的邊權重值較高,通過對所有數(shù)據(jù)點組成的圖進行切圖,讓切圖后不同的子圖間邊權重和盡可能低,而子圖內的邊權重和盡可能高,從而達到聚類的目的。1.2.4降維任務降維(dimensionalreduction)任務的目標就是采用某種映射方法,將原高維空間中的數(shù)據(jù)點映射到低維空間中。之所以進行數(shù)據(jù)降維,是因為在原始的高維空間中包含冗余信息及噪聲信息,在實際應用中會造成誤差,降低準確率;希望通過降維減少冗余信息所造成的誤差,提高識別精度,后者通過降維算法來尋找數(shù)據(jù)內部的本質結構特征。主成分分析01線性判別分析02多維尺度變換031.2.4降維任務1.主成分分析PCA降維是最常用的線性降維方法,它的目標是通過某種線性投影,將高維的數(shù)據(jù)映射到低維的空間中表示,并期望在所投影的維度上數(shù)據(jù)的方差最大,以此使用較少的數(shù)據(jù)維度,同時保留住較多的原數(shù)據(jù)點的特性。也就是說,PCA追求的是在降維之后能夠最大化保持數(shù)據(jù)的內在信息,并通過衡量在投影方向上的數(shù)據(jù)方差的大小來衡量該方向的重要性。1.2.4降維任務2.線性判別分析LDA方法也稱fisherlineardiscriminant,是一種有監(jiān)督的線性降維算法。它通過將高維空間數(shù)據(jù)投影到低維空間來確定每個樣本所屬的類,這里考慮K個類的情況。它的目標是將樣本能盡可能正確地分成K類,體現(xiàn)為同類樣本投影點盡可能近,不同類樣本點盡可能遠。3.多維尺度變換MDS算法是一種經典的降維方法,可以緩解在高維情形下出現(xiàn)的數(shù)據(jù)樣本稀疏和距離計算困難(維數(shù)災難)等問題。MDS算法尋找高維數(shù)據(jù)到低維空間的投影,要求原始空間中樣本之間的距離在低維投影空間中得以保持。CONTENTS1.3典型數(shù)據(jù)領域與常見數(shù)據(jù)類型1.3典型數(shù)據(jù)領域與常見數(shù)據(jù)類型主成分分析線性判別分析01021.3.1典型數(shù)據(jù)領域醫(yī)療大數(shù)據(jù)在線網(wǎng)絡大數(shù)據(jù)金融大數(shù)據(jù)旅游大數(shù)據(jù)交通大數(shù)據(jù)1.3.1典型數(shù)據(jù)領域1.醫(yī)療大數(shù)據(jù)患者就醫(yī)過程產生的數(shù)據(jù)。制藥企業(yè)和生命科學產生的數(shù)據(jù)。例如患者的電子病歷、體征數(shù)據(jù)、化驗數(shù)據(jù)、住院數(shù)據(jù),醫(yī)學影像數(shù)據(jù),醫(yī)生對患者的問診數(shù)據(jù),醫(yī)生對患者的臨床診治、用藥、手術等數(shù)據(jù)例如與用藥相關的用藥量、用藥時間、用藥成分、實驗對象反應時間、癥狀改善表象等數(shù)據(jù)1.3.1典型數(shù)據(jù)領域1.醫(yī)療大數(shù)據(jù)可穿戴設備帶來的健康數(shù)據(jù)。醫(yī)療研究和實驗室數(shù)據(jù)。例如通過各種穿戴設備(手環(huán)、起搏器、眼鏡等)收集的人體的各種體征數(shù)據(jù)例如在藥物研制過程中進行各種實驗及不同適應癥狀、副作用等數(shù)據(jù)1.3.1典型數(shù)據(jù)領域金融機構在日常經營中各種應用系統(tǒng)產生的數(shù)據(jù)。金融機構在網(wǎng)上采集的企業(yè)輿情數(shù)據(jù)和個人行為數(shù)據(jù)。例如銀行卡數(shù)據(jù)、存貸款數(shù)據(jù)、客戶資產數(shù)據(jù)、個人信用數(shù)據(jù)等例如企業(yè)相關的司法、行政處罰及訴訟數(shù)據(jù),資產重組、投融資及產品數(shù)據(jù),個人學歷、職業(yè)數(shù)據(jù)等2.金融大數(shù)據(jù)1.3.1典型數(shù)據(jù)領域從第三方購買的數(shù)據(jù)。例如從政府購買的公積金、社保和稅務等公共數(shù)據(jù)2.金融大數(shù)據(jù)通過對以上數(shù)據(jù)的分析應用,可以進行貸款風險評估和交易欺詐檢測,可以進行理財推薦和精準營銷,可以進行股價預測,可以基于客戶細分開發(fā)符合客戶個性化需求的金融產品。1.3.1典型數(shù)據(jù)領域3.交通大數(shù)據(jù)交通大數(shù)據(jù)包括:基于公共交通部門發(fā)行交通卡收集的乘客出行數(shù)據(jù),如各時段、各路段的乘車人數(shù);交通管理部門在道路上預埋或預設物聯(lián)網(wǎng)傳感器收集的數(shù)據(jù),如車流量、客流量信息;通過衛(wèi)星地圖對城市道路的交通情況進行分析得到道路交通的實時數(shù)據(jù);通過出租車車載終端或數(shù)據(jù)采集系統(tǒng)提供的實時數(shù)據(jù);基于智能手機中的地圖應用產生的交通信息。通過對以上數(shù)據(jù)的分析應用,可以感知城市道路擁堵情況,可以制定疏散和管制措施預案,從而提高道路管理能力,可以為用戶提供線路推薦服務。1.3.1典型數(shù)據(jù)領域4.旅游大數(shù)據(jù)旅游大數(shù)據(jù)包括城市的旅游景點數(shù)據(jù)、經濟數(shù)據(jù)、氣象數(shù)據(jù)、人文數(shù)據(jù)等,景區(qū)的票務數(shù)據(jù)、旅游人數(shù)數(shù)據(jù)、監(jiān)控數(shù)據(jù)等,酒店的在線預訂和入住數(shù)據(jù)、客戶信息及行為偏好數(shù)據(jù)等,旅游網(wǎng)站的旅游線路數(shù)據(jù)、旅游攻略數(shù)據(jù)、點評數(shù)據(jù)等,游客畫像、消費數(shù)據(jù)、緊急調度數(shù)據(jù)等。通過對以上數(shù)據(jù)的分析應用,可以進行旅游推薦、安全提醒、旅游產品規(guī)劃、旅游廣告投放等服務。1.3.1典型數(shù)據(jù)領域5.在線網(wǎng)絡大數(shù)據(jù)在線網(wǎng)絡大數(shù)據(jù)包括社交平臺產生的社會關系數(shù)據(jù)、用戶生成數(shù)據(jù)、位置數(shù)據(jù)、個人偏好數(shù)據(jù)等,電商平臺產生的商品銷售數(shù)據(jù)、客戶消費數(shù)據(jù)、促銷活動數(shù)據(jù)等,視頻網(wǎng)站產生的視頻內容數(shù)據(jù)、用戶觀看數(shù)據(jù)等,媒體平臺產生的新聞數(shù)據(jù)、用戶評論數(shù)據(jù)等,求職招聘平臺產生的企業(yè)招聘數(shù)據(jù)、個人簡介數(shù)據(jù)、崗位薪酬數(shù)據(jù)等。通過對以上數(shù)據(jù)的分析應用,可以進行社會關系推薦、工作職位推薦、商業(yè)廣告投放、新聞消息推薦等服務。1.3.2常見數(shù)據(jù)類型結構化數(shù)據(jù)半結構化數(shù)據(jù)非結構化數(shù)據(jù)0102031.3.2常見數(shù)據(jù)類型1.結構化數(shù)據(jù)結構化數(shù)據(jù)是能夠用二維表結構來表達實現(xiàn)的數(shù)據(jù),如數(shù)字、符號等。在項目中,這些數(shù)據(jù)一般保存在數(shù)據(jù)庫中,其具有的明確關系使得這些數(shù)據(jù)運用起來十分方便,不過,它們在商業(yè)上的可挖掘價值比較差。2.半結構化數(shù)據(jù)半結構化數(shù)據(jù)不符合關系型數(shù)據(jù)庫或其他數(shù)據(jù)模型結構,但包含用來分隔語義元素及對記錄和字段進行分層的相關標記。因此,它也被稱為自描述的結構。在半結構化數(shù)據(jù)中,屬性的個數(shù)、順序等都是不重要的,它們可以通過相關標記進行解釋,從而具有良好的擴展性。常見的半結構化數(shù)據(jù)有網(wǎng)頁、XML和JSON。1.3.2常見數(shù)據(jù)類型3.非結構化數(shù)據(jù)非結構化數(shù)據(jù)是數(shù)據(jù)結構不規(guī)則或不完整,沒有預定義的數(shù)據(jù)模型,不方便用數(shù)據(jù)庫二維邏輯表來表現(xiàn)的數(shù)據(jù)。非結構化數(shù)據(jù)包括所有格式的辦公文檔、文本、圖片、各類報表、圖像和音頻、視頻信息等。非結構化數(shù)據(jù)的格式非常多樣,標準也是多樣性的,而且在技術上非結構化信息比結構化信息更難標準化。所以,存儲、檢索、發(fā)布及利用非結構化數(shù)據(jù)需要更加智能化的IT技術,如海量存儲、智能檢索、知識挖掘、內容保護等。CONTENTS1.4數(shù)據(jù)分析的生態(tài)系統(tǒng)1.4數(shù)據(jù)分析的生態(tài)系統(tǒng)01020304分布式文件系統(tǒng)數(shù)據(jù)可視化工具機器學習與數(shù)據(jù)分析平臺分布式編程框架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)的一些技術細節(jié),但Google并沒有將該系統(tǒng)的軟件部分作為開源軟件發(fā)布。2.Hadoop分布式文件系統(tǒng)(Hadoopdistributedfilesystem,HDFS)HDFS是Hadoop的核心子項目,是一個可以運行在普通硬件設備上的分布式文件系統(tǒng),是分布式計算中數(shù)據(jù)存儲和管理的基礎,是基于流數(shù)據(jù)模式訪問和處理超大文件的需求而開發(fā)的。它所具有的高容錯、高可靠性、高可擴展性、高吞吐率等特征為海量數(shù)據(jù)提供了不怕故障的存儲,給超大數(shù)據(jù)集的應用處理帶來了很多便利。1.4.1分布式文件系統(tǒng)3.Ceph分布式文件系統(tǒng)Ceph是一個統(tǒng)一的分布式存儲系統(tǒng),設計初衷是提供較好的性能、可靠性和可擴展性。Ceph項目最早起源于SageWeil就讀博士期間的工作(最早的成果于2004年發(fā)表),并隨后貢獻給開源社區(qū)。在經過數(shù)年的發(fā)展之后,目前已得到眾多云計算廠商的支持并被廣泛應用。RedHat及OpenStack都可與Ceph整合以支持虛擬機鏡像的后端存儲。4.Lustre分布式文件系統(tǒng)Lustre是一款開源的、基于對象存儲的集群并行分布式文件系統(tǒng),具有很高的擴展性、可用性、易用性等,在高性能計算中應用很廣泛,世界十大超級計算中心中的7個及超過50%的全球排名前50的超級計算機都在使用Lustre。Lustre可以支持上萬個結點,數(shù)以PB數(shù)量的存儲系統(tǒng)。1.4.2分布式編程框架MapReduce編程框架Spark編程框架Storm編程框架Petuum編程框架1.4.2分布式編程框架1.MapReduce編程框架MapReduce是一種編程模型,被廣泛應用于大規(guī)模數(shù)據(jù)的處理中。2004年,Google發(fā)表了一篇論文,介紹了MapReduce編程框架。利用這款軟件框架,開發(fā)人員可以快速地編寫分布式應用程序。現(xiàn)今,該框架已被廣泛地應用到日志分析、海量數(shù)據(jù)排序等任務中。MapReduce編程模式實際上是基于一種傳統(tǒng)的分治法而實現(xiàn)的。分治法將復雜問題分成多個類似的子問題,直到子問題的規(guī)模小到能直接得出結果,再聚合中間數(shù)據(jù)所得到的最終結果就是原問題的解。1.4.2分布式編程框架2.Spark編程框架Spark是UCBerkeleyAMP實驗室開源的類HadoopMapReduce的通用的并行計算框架,Spark基于MapReduce算法實現(xiàn)分布式計算,擁有HadoopMapReduce所具有的優(yōu)點;但不同于MapReduce的是,Spark中任務的輸出和結果可以保存在內存中,從而不再需要讀寫HDFS,因此,Spark能更好地適用于數(shù)據(jù)挖掘與機器學習等需要迭代的MapReduce的算法。1.4.2分布式編程框架3.Storm編程框架Storm是一款最早由BackType公司(現(xiàn)已被Twitter公司收購)開發(fā)的分布式實時計算系統(tǒng)。Storm為分布式實時計算提供了一組通用原語,其用法與Hadoop極其類似,也被稱為實時計算版的Hadoop。它也可被用于流處理中,實現(xiàn)實時處理消息并更新數(shù)據(jù)庫。同時Storm可以采用任意編程語言編寫。1.4.2分布式編程框架4.Petuum編程框架Petuum是一個專門針對機器學習的分布式平臺,它致力于提供一個超大型機器學習的通用算法和系統(tǒng)接口。它的出現(xiàn)主要解決兩類機器學習在規(guī)模上面臨的問題:大數(shù)據(jù)(大量的數(shù)據(jù)樣本)和大模型(大量的模型參數(shù))。Petuum能夠在集群和云計算(如AmazonEC2和GoogleGCE)上高效運行。1.4.3機器學習與數(shù)據(jù)分析平臺1.scikit-learnScikit-learn是開源的Python機器學習庫,最早由數(shù)據(jù)科學家DavidCournapeau于2007年發(fā)起,它基于NumPy和Scipy,提供了大量用于數(shù)據(jù)挖掘和分析的工具。Scikit-learn可以實現(xiàn)數(shù)據(jù)預處理、分類、回歸、降維、模型選擇等常用的機器學習算法。2.NetworkXNetworkX是Python的一個開源包,用于對復雜網(wǎng)絡進行創(chuàng)建、操作和學習。利用NetworkX可以以標準化和非標準化的數(shù)據(jù)格式存儲網(wǎng)絡、生成多種隨機網(wǎng)絡和經典網(wǎng)絡、分析網(wǎng)絡結構、建立網(wǎng)絡模型、設計新的網(wǎng)絡算法、進行網(wǎng)絡繪制等。1.4.4數(shù)據(jù)可視化工具1.MatplotlibMatplotlib是Python常用的數(shù)據(jù)繪制包,繪圖功能強大,可以輕易地畫出各種統(tǒng)計圖形,如散點圖、條形圖、餅狀圖等。Matplotlib包含兩個重要模塊Pylab和Pyplot。Pylab已經幾乎實現(xiàn)了MATLAB所支持的所有繪圖功能,Pyplot在Pylab的基礎上支持數(shù)學運算套件NumPy,使用者可以直接調用NumPy函數(shù)做計算后進行數(shù)據(jù)可視化。2.OrangeOrange的全部內容都是關于數(shù)據(jù)可視化,幫助發(fā)現(xiàn)隱藏的數(shù)據(jù)模式,提供數(shù)據(jù)分析過程背后的直覺或支持數(shù)據(jù)科學家與領域專家之間的交流??梢暬翱谛〔考ㄉⅫc圖、箱形圖和直方圖,以及特定于模型的可視化,如樹狀圖、輪廓圖和樹可視化。許多其他可視化功能可用于附加組件,包括網(wǎng)絡、詞云、地理地圖等的可視化。CONTENTS1.5本書的內容和組織1.5本書的內容和組織本書將主要從算法的角度介紹數(shù)據(jù)分析所使用的主要技術和原理,對于經典的數(shù)據(jù)分析算法,本書會配備大量的應用實例。本書主要內容為數(shù)據(jù)分析的基礎概念和基本技術,對于有志于從事數(shù)據(jù)分析領域的讀者,本書可以作為一個很好的起點。我們將從Python編程語言(第2章)開始本書的技術討論。該章將為讀者介紹進行數(shù)據(jù)分析應用最廣泛的編程語言Python。通過此章的介紹,讀者能夠掌握Python語言的語法規(guī)則、編程規(guī)范、程序調試及異常處理方法,為進行數(shù)據(jù)分析奠定編程基礎。第3章將詳細介紹數(shù)據(jù)分析的具體過程,教授讀者如何開展一個完整的數(shù)據(jù)分析項目。如何進行數(shù)據(jù)準備、如何快速地理解數(shù)據(jù)并選擇合適的模型算法,如何應用統(tǒng)計學的相關方法進行數(shù)據(jù)的描述性分析。1.5本書的內容和組織數(shù)據(jù)分析的主要任務,即回歸、聚類、分類和降維,將依次在第4章、第5章、第6章和第7章進行介紹。各章的內容主要包括基本概念、經典算法的原理和實際步驟、算法的應用實例,最后探討各個問題最新的前沿技術。本書的第8章將介紹社交網(wǎng)絡分析,包括對網(wǎng)絡中的結點進行重要性排序、網(wǎng)絡鏈路預測方法、網(wǎng)絡結構的社團檢測及各自的評價指標和實際應用。第9章將詳細介紹數(shù)據(jù)可視化技術,介紹如何基于Matplotlib可視化工具繪制各種數(shù)據(jù)圖表,讓讀者能夠更好地展示數(shù)據(jù)分析的結果。想一想:學習完本章內容后,思考一下:(1)什么是數(shù)據(jù)分析?(2)典型的數(shù)據(jù)領域包括哪些?(3)常見的數(shù)據(jù)類型有哪些?感謝觀看第2章Python編程語言2.1初識Python2.2字符串與流程控制2.3列表、元組與字典2.4函數(shù)、模塊與包CONTENTS目錄2.5Python異常處理(1)知道什么是Python編程語言,并了解Python編程的基本規(guī)范。(2)了解Python編程環(huán)境的構建方法。(3)學習Python典型的數(shù)據(jù)結構。(4)了解函數(shù)、模塊和包。(5)理解Python的原理及其異常處理機制。學習目標(1)Python編程的語法。(2)Python語言的變量與數(shù)據(jù)結構。(3)Python語言中函數(shù)、模塊和包的構建與使用方法。(4)Python編程的調試方法。學習重點CONTENTS2.1初識Python2.1初識Python常見的計算機編程語言分為兩類,即動態(tài)編程語言和靜態(tài)編程語言。其中,動態(tài)編程語言是使用變量前不需要聲明變量,在運行期間才去做數(shù)據(jù)類型檢查的語言。編程時,不用給變量指定數(shù)據(jù)類型,該語言會在第一次給變量賦值時在內部將數(shù)據(jù)類型記錄下來。而靜態(tài)編程語言在使用變量前需要聲明變量,數(shù)據(jù)類型檢查發(fā)生在編譯階段,也就是說,在寫程序時,要聲明變量的數(shù)據(jù)類型。例如,Java、C++、C、Go等語言就是靜態(tài)編程語言。本書使用的Python語言是一門具有靜態(tài)編程語言工程項目開發(fā)能力的動態(tài)編程語言。想一想:Python、JavaScript、PHP、Ruby、Java、C++、C、Go等語言,哪些屬于動態(tài)語言?哪些屬于靜態(tài)語言?2.1初識PythonPython是一種跨平臺的、開源的、免費的、解釋型的高級編程語言,近幾年發(fā)展迅猛,在編程語言排行榜名列第一。Python的應用領域非常廣泛,其中包括Web開發(fā)、大數(shù)據(jù)處理、云計算、機器學習、自動化運維、網(wǎng)絡爬蟲、游戲開發(fā)等,如圖2-1所示。Python語言與當前其他編程語言相比有如下優(yōu)點:學習簡單、兼容性良好、面向對象、自動內存管理、第三方庫豐富。2.1初識Python01020304Python概述Python的基本數(shù)據(jù)類型Python語法特點Python環(huán)境搭建2.1.1Python概述Python是由荷蘭人GuidovanRossum于1991年發(fā)明的一種面向對象的解釋型高級編程語言,其標志如圖2-2所示。Python語言的設計哲學為優(yōu)雅、明確、簡單,實際上,這門語言始終貫穿這一理念。Python語言的目標是讓編程人員的主要精力用于思考程序的邏輯,而不是程序本身的實現(xiàn)細節(jié)。Python語言的提出受到了C語言、Shell語言、ABC語言等多種編程語言的影響,綜合了多種編程語言的特點和優(yōu)勢。Python語言的簡單性、開放性、擴展性,使它受到廣大程序員的歡迎,成為一個優(yōu)秀并廣泛使用的計算機編程語言。由于開源社區(qū)的貢獻,Python語言通過標準庫及第三方包形成了功能強大的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)境搭建運行下載的Python3.7.2.exe文件,在選擇安裝組件時,選擇所有的組件,特別要注意選中“AddPython3.7toPATH”復選框,如圖2-4所示。然后連續(xù)單擊Next按鈕即可完成安裝,如圖2-5所示。2.1.2Python環(huán)境搭建選擇將Python安裝到C:\Python37目錄下,安裝完成后,打開命令提示符窗口,輸入Python并回車后,會出現(xiàn)兩種情況。情況一:看到圖2-6所示的界面,說明Python安裝成功,提示符“>>>”說明已經在Python交互式環(huán)境中。輸入exit()并回車,退出Python交互式環(huán)境。情況二:得到一個錯誤提示:“Python不是內部或外部命令,也不是可運行的程序或批處理文件?!边@說明Windows沒有找到對應的可執(zhí)行程序,需要將Python添加到Path環(huán)境變量中。2.1.2Python環(huán)境搭建接下來進行Python環(huán)境變量修改。右擊桌面上的計算機圖標,在彈出的快捷菜單中選擇“屬性”命令,打開“系統(tǒng)”窗口,在左側窗格中單擊“高級系統(tǒng)設置”鏈接,彈出“系統(tǒng)屬性”對話框,切換到“高級”選項卡,單擊“環(huán)境變量”按鈕,如圖2-7所示。2.1.2Python環(huán)境搭建隨即彈出“環(huán)境變量”對話框,在“系統(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界面,設置程序的安裝路徑,如圖2-11所示。單擊Next按鈕,開始安裝PyCharm,如圖2-12所示。2.1.2Python環(huán)境搭建完成PyCharm安裝的結果如圖2-13所示。想一想:
你還記得Java語言和C語言的環(huán)境搭建嗎?它們的環(huán)境搭建與Python的環(huán)境搭建有什么異同?2.1.2Python環(huán)境搭建打開PyCharm編輯器,在PyCharm中編寫Python代碼。首先,新建一個Python工程,執(zhí)行File→NewProject命令,確定工程的存儲位置和對應的編譯器,如圖2-14和圖2-15所示。2.1.2Python環(huán)境搭建在工程上面右擊,然后在彈出的快捷菜單中執(zhí)行New→PythonFile命令,如圖2-16所示,創(chuàng)建一個新的Python文件。2.1.2Python環(huán)境搭建然后,在新建的Python文件中進行編碼,完成需要的相關功能。對于完成編碼的Python文件,在文件名上右擊并選擇Run命令即可執(zhí)行文件,如圖2-17所示。在代碼執(zhí)行完畢之后,程序的執(zhí)行結果或者可能出現(xiàn)的相關錯誤信息會出現(xiàn)在PyCharm界面下方的結果區(qū)域。在本實例中,按照程序要求輸入用戶名稱,然后程序執(zhí)行完畢輸出最終結果,如圖2-18和圖2-19所示。2.1.2Python環(huán)境搭建2.1.2Python環(huán)境搭建2.1.3Python語法特點Python注釋代碼縮進編碼規(guī)范0102032.1.3Python語法特點1.Python注釋Python注釋是指在Python程序代碼中添加的標注性文字,類似于產品的使用說明。當程序被處理時,這些注釋會被自動忽略不會被當作代碼處理。通過添加程序注釋,可以幫助我們理清代碼邏輯。在與別人合作進行程序開發(fā)時,添加注釋可以減少溝通成本。在Python模塊開發(fā)時添加注釋可以減少他人的使用成本。另外,在編碼過程中,可以臨時注釋一段代碼,方便調試。具體地,Python程序的注釋主要可分為以下三類。(1)單行注釋,即#,如以下代碼所示:1.#輸出人員名稱2.print("NanShan")2.1.3Python語法特點1.Python注釋(2)多行注釋,通常用'''、"""表示,將多行注釋文字放在這兩個標識之間,或者在每行需要注釋的內容之前加#,具體用法如以下代碼所示:1.注釋信息2."""注釋信息"""3.#在行首添加4.5.6.輸出人員名稱7.此處姓名是NanShan8.9.print("NanShan")2.1.3Python語法特點1.Python注釋(3)特殊注釋,包括解釋器說明和中文支持。在通過“./”執(zhí)行Python程序時,在程序中應指明解釋器的路徑,如以下代碼所示:1.#!/usr/bin/python2.print"你好,世界"Python程序中如果包含中文且未指定編碼,在執(zhí)行過程會出現(xiàn)語法報錯“SyntaxError:NonASCIIcharacter”。2.1.3Python語法特點1.Python注釋實際上,Python中默認的編碼格式是ASCII格式,在未修改編碼格式時無法正確打印漢字,所以在讀取中文時會報錯。解決方法為只要在文件開頭加入#--coding:utf-8--或者#coding=utf-8就可以了。1.#!/usr/bin/python2.#--coding:utf-8--
3.print"你好,世界"想一想:
Python語言的注釋與其他語言的注釋有什么異同?2.1.3Python語法特點2.代碼縮進在Python編程語言中,代碼縮進是指在每一行代碼左端空出一定長度的空白,從而可以更加清晰地從外觀上看出程序的邏輯結構。具體地,在Python里不能用括號來表示語句塊;行首的空白(空格或制表符)用來決定邏輯行的縮進層次,從而用來決定語句的分組;同一層次的語句必須有相同的縮進,每一組這樣的語句稱為一個塊。例如:1.__author__=taowu2.#--coding:utf-8--
3.#Filename:test.py2.1.3Python語法特點2.代碼縮進4.#function:inputchecking5.6.num=float(input("輸入一個數(shù)字:"))7.ifnum>0:8.print("正數(shù)")9.elifnum==0:10.print("零")11.else:12.print("負數(shù)")2.1.3Python語法特點3.編碼規(guī)范除了注釋和代碼縮進之外,Python程序還應該遵守基本的編碼規(guī)范:(1)每個import語句只導入一個模塊,盡量避免一次導入多個模塊;(2)不要在行尾添加分號“;”,也不要用分號將兩條命令放在同一行;(3)運算符兩側、函數(shù)參數(shù)之間、逗號“,”兩側建議使用空格進行分隔;(4)建議每行不超過80個字符;(5)使用必要的空行可以增加代碼的可讀性;(6)適當使用異常處理結構提高程序容錯性。做一做:
請嘗試用print函數(shù)在命令行窗口中輸出“我愛學Python!”2.1.4Python的基本數(shù)據(jù)類型0103050204數(shù)值類型布爾值運算符數(shù)據(jù)類型轉換字符串2.1.4Python的基本數(shù)據(jù)類型1.數(shù)值類型(1)整型(int):正整數(shù)或負整數(shù),不帶小數(shù)點。(2)浮點型(float):由整數(shù)部分與小數(shù)部分組成。(3)復數(shù)(complex):由實數(shù)部分和虛數(shù)部分構成,可以用a+bj或者complex(a,b)表示。數(shù)值類型支持加、減、乘、除等相關操作,同時Python整數(shù)運算結果仍然是整數(shù),浮點數(shù)運算結果仍然是浮點數(shù)。Python整數(shù)和浮點數(shù)混合運算的結果就變成浮點數(shù)。整數(shù)除法,即使除不盡,結果仍然是整數(shù),余數(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ù)運算結果仍然是整數(shù),浮點數(shù)運算結果仍然是浮點數(shù)9.1+2
#==>整數(shù)310.1.0+2.0
#==>浮點數(shù)3.011.12.#整數(shù)和浮點數(shù)混合運算的結果變成浮點數(shù)13.1+2.0
#==>浮點數(shù)3.014.15.#整數(shù)除法,即使除不盡,結果仍然是整數(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ù)的表示完全一致,一個布爾值只有True、False兩種值。注意,Python把0、空字符串和None看成False,其他數(shù)值和非空字符串都看成True。布爾值舉例說明如下:1.Flag1=True2.Flag2=False3.print(Flag1andFlag2)
#==>False2.1.4Python的基本數(shù)據(jù)類型4.數(shù)據(jù)類型轉換(1)int(x):將x轉換為一個整數(shù)。(2)float(x):將x轉換為一個浮點數(shù)。(3)str(x):將x轉換為一個字符串類型。(4)complex(x):將x轉換為一個復數(shù),實部為x,虛部為0。(5)complex(x,y):將x和y轉換為一個復數(shù),實部為x,虛部為y。(6)hex(x):將整數(shù)轉換為十六進制字符串。(7)oct(x):將整數(shù)轉換為八進制字符串。2.1.4Python的基本數(shù)據(jù)類型5.運算符Python的基本運算符包括算術運算符、賦值運算符、比較運算符、邏輯運算符和位運算符。假設變量a的值是10,變量b的值是21,則應用算術運算符的示例如表2-1所示。2.1.4Python的基本數(shù)據(jù)類型5.運算符假設變量a的值為10,變量b的值為20,則應用賦值運算符的示例如表2-2所示。2.1.4Python的基本數(shù)據(jù)類型5.運算符假設變量a的值為10,變量b的值為20,則應用比較運算符的示例如表2-3所示。2.1.4Python的基本數(shù)據(jù)類型5.運算符假設變量a的值為True,變量b的值為False,則應用邏輯運算符的示例如表2-4所示。2.1.4Python的基本數(shù)據(jù)類型5.運算符假設變量a=60,b=13(a=00111100,b=00001101),則應用位運算符的示例如表2-5所示。CONTENTS2.2字符串與流程控制2.2字符串與流程控制字符串流程控制01022.2.1字符串0103050204拼接字符串截取字符串合并字符串分割字符串計算字符串長度2.2.1字符串1.拼接字符串在Python中,使用“+”運算符可完成多個字符串的拼接。例如:1.拼接字符串2.str1=我今天一共走了3.num=198884.str2=步5.print(str1+str(num)+str2)輸出“我今天一共走了19888步”。字符串不允許與其他類型的數(shù)據(jù)拼接,否則會報錯。2.2.1字符串2.計算字符串長度在Python中,使用len()函數(shù)可計算字符串的長度。例如:1.字符串長度2.str=我今天一共走了19888步3.length=len(str)4.print(length)輸出“13”。默認情況下,不區(qū)分英文、數(shù)字和漢字,所有字符都按一個字符計算。但是,對于不同的編碼(UTF8,GBK),一個漢字會占不同的字節(jié)。2.2.1字符串3.截取字符串可以使用切片方法實現(xiàn)字符串的截取。語法格式如下:string[start:end:step]例如:1.str=我愛學Python!2.print(str)#我愛學Python!3.print(str[1])
#愛4.print(str[:5])
#我愛學Py5.print(str[5:])
#thon!2.2.1字符串4.分割字符串使用split()函數(shù)可實現(xiàn)字符串的分割。語法格式如下:str.split(sep,maxsplit)例如:1.str=我愛學>>>https://www.P/2.print(str.split())#[我,愛,學,>>>,https://www.P/]3.print(str.split(>>>))#[我愛學,https://www.P/]4.print(str.split(.))#[我愛學>>>https://www,Python,org/]2.2.1字符串5.合并字符串使用joint()函數(shù)可實現(xiàn)字符串的合并。語法格式如下:strnew=string.join(iterable)例如:1.goods=[番茄,土豆,南瓜]2.str_goods=|.join(goods)#用|進行連接3.print(str_goods)#番茄|土豆|南瓜2.2.2流程控制在計算機編程語言中,程序的流程控制大致包括三種邏輯結構,即順序結構、選擇結構和循環(huán)結構,如圖2-20所示。具體地,順序結構是指順序執(zhí)行程序中包含的所有語句;選擇結構根據(jù)程序中的條件表達式進行判斷,根據(jù)不同的結果執(zhí)行不同的語句塊;循環(huán)結構是指在滿足條件表達式要求時多次循環(huán)執(zhí)行某段程序語句,然后在不滿足條件表達式要求時退出循環(huán)。由于順序結構不需要任何流程控制語句,本節(jié)主要講解Python語言中與選擇結構和循環(huán)結構相關的邏輯控制語句。選擇語句循環(huán)語句跳轉語句2.2.2流程控制(1)if…else…語句。一個if語句后可跟一個可選的else語句,如果布爾表達式為True,則執(zhí)行if塊內的代碼。如果布爾表達式為False,則執(zhí)行else塊內的代碼。例如:1.選擇語句1.name=NanShan2.ifname==Python:#判斷變量是否為Python3.print(IlikePython)#并輸出歡迎信息4.else:5.print(name)#條件不成立時輸出變量名稱2.2.2流程控制(2)if…elif…else語句。一個if語句后可跟可選的elif…else語句,這可用于測試多種條件。if語句之后可跟一個或多個elif…else語句,如果某一條件表達式為真,則執(zhí)行相應的語句塊。只有在所有的條件表達式都為假的情況下,才會執(zhí)行else語句。例如:1.選擇語句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)#條件均不成立時輸出2.2.2流程控制(1)while循環(huán)語句。通過一個條件來判斷是否要繼續(xù)執(zhí)行循環(huán)體,若條件為真則執(zhí)行,否則退出。例如:2.循環(huán)語句1.flag=True2.num=13.whileflag:#條件表達式14.print(Hello)5.num+=16.ifnum>4:#條件表達式27.flag=False2.2.2流程控制(2)for循環(huán)語句。for循環(huán)允許編寫一個執(zhí)行指定次數(shù)的循環(huán)控制結構,在達到指定次數(shù)之前,不斷執(zhí)行程序塊,并且在每次執(zhí)行之前進行條件檢查。如果達到了指定的循環(huán)次數(shù),則退出。例如:2.循環(huán)語句1.forletterinPython:#第一個實例2.print(當前字母:,letter)3.4.fruits=[banana,apple,mango]5.forfruitinfruits:#第二個實例6.print(當前字母:,fruit)7.print("Goodbye!")2.2.2流程控制對于循環(huán)結構,除了基于while循環(huán)語句和for循環(huán)語句構建循環(huán)邏輯之外,在滿足特定條件時,需要直接退出循環(huán)或者跳過循環(huán)結構中某一輪的執(zhí)行。因此,需要跳轉語句進行Python循環(huán)結構的邏輯控制。(1)break語句。其用于終止當前循環(huán)(打破最小封閉for或while循環(huán))。例如:3.跳轉語句1.forletterinPython:#第一個實例2.ifletter==h:3.break4.print(當前字母:,letter)想一想:Python語言中的break語句的功能與C語言中的break語句的功能有什么異同?2.2.2流程控制輸出結果:3.跳轉語句當前字母:P當前字母:y當前字母:t(2)continue語句。其用于提前終止本次循環(huán)而進入下一次循環(huán)中。例如:1.forletterinPython:2.ifletter==h:3.continue4.print(當前字母:,letter)2.2.2流程控制輸出結果:3.跳轉語句當前字母:P當前字母:y當前字母:t當前字母:o當前字母:n2.2.2流程控制(3)pass語句。其不做任何事情,僅起到占位作用,方便以后需要時進行補充。例如:3.跳轉語句1.forletterinPython:2.ifletter==h:3.pass4.print(這是pass塊)5.print(當前字母:,letter)6.print("Goodbye!")CONTENTS2.3列表、元組與字典2.3列表、元組與字典列表元組字典0102032.3.1列表列表是最常用的Python數(shù)據(jù)類型,其數(shù)據(jù)項不需要具有相同的類型。創(chuàng)建一個列表,只要把由逗號分隔的不同數(shù)據(jù)項用方括號括起來即可。如下所示:1.list1=[1,2,3,4,5];2.list2=["a","b","c","d"];遍歷列表添加、修改和刪除列表統(tǒng)計和計算排序2.3.1列表對列表中的每個元素進行查詢和處理。例如:1.list=[sichuan,chongqing,guangdong,hunan]2.foriteminlist:3.print(item)1.遍歷列表輸出結果:sichuanchongqingguangdonghunan2.3.1列表可以通過append()函數(shù)在列表末尾添加元素。對于列表中的已有元素,可以通過索引直接進行修改和刪除。例如: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)計和計算通過count()獲取列表中指定元素的出現(xiàn)次數(shù),代碼如下:1.list=[sichuan,chongqing,sichuan,hunan]2.list.count(sichuan)通過index()獲取指定元素首次出現(xiàn)的下標,代碼如下: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.排序使用列表對象的sort()方法改變原始列表元素的排列順序,其中可以通過reverse參數(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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年圖書發(fā)行銷售宣傳渠道合約條款
- 2025年AR技術轉讓協(xié)議
- 2025年夜間城市觀光合同
- 2025年出口信用保險保險合同(簽名版)
- 二零二五版校園食堂食品安全合作協(xié)議3篇
- 2025版專業(yè)房產行紀委托買賣合同細則3篇
- 2024離婚涉及的競業(yè)限制合同
- 2025年度高層建筑石材鋼架施工安全防護與質量保證合同4篇
- 2024起訴離婚后子女撫養(yǎng)權及監(jiān)護權糾紛調解服務協(xié)議3篇
- 二零二五年度租賃房屋租賃合同登記備案協(xié)議
- 服務器報價表
- 2025年高考化學試題分析及復習策略講座
- 世界近代史-對接選擇性必修 課件-高考統(tǒng)編版歷史一輪復習
- 2024-2029年中國制漿系統(tǒng)行業(yè)市場現(xiàn)狀分析及競爭格局與投資發(fā)展研究報告
- 大門封條模板
- 【“凡爾賽”網(wǎng)絡流行語的形成及傳播研究11000字(論文)】
- ppr管件注塑工藝
- 液化氣站其他危險和有害因素辨識及分析
- 高中語文教學課例《勸學》課程思政核心素養(yǎng)教學設計及總結反思
- 中國農業(yè)銀行小微企業(yè)信貸業(yè)務貸后管理辦法規(guī)定
- 市政道路建設工程竣工驗收質量自評報告
評論
0/150
提交評論