基于PySpark的高級(jí)數(shù)據(jù)分析
定 價(jià):78 元
本書的主要內(nèi)容有:熟悉Spark的編程模型和生態(tài)系統(tǒng)。學(xué)習(xí)數(shù)據(jù)科學(xué)的一般方法。檢查分析大型公共數(shù)據(jù)集執(zhí)行步驟的完整性。發(fā)現(xiàn)哪些機(jī)器學(xué)習(xí)工具對(duì)特定問題有幫助。探索可適應(yīng)多種用途的代碼。
編輯推薦時(shí)至今日產(chǎn)生的數(shù)據(jù)量已經(jīng)達(dá)到令人驚人的地步,而且還在不斷增長(zhǎng)。Apache Spark已經(jīng)成為分析大數(shù)據(jù)的實(shí)際工具,并且也是數(shù)據(jù)科學(xué)工具箱的關(guān)鍵部分。本書針對(duì)Spark最z新版本進(jìn)行了更新,將Spark、統(tǒng)計(jì)方法和真實(shí)數(shù)據(jù)集結(jié)合在一起,教你如何運(yùn)用 PySpark、Spark Python API和Spark編程中的其他最z佳實(shí)踐來解決分析問題。數(shù)據(jù)科學(xué)家Akash Tandon、Sandy Ryza、Uri Laserson、Sean Owen和Josh Wills介紹了Spark生態(tài)系統(tǒng),然后深入研究將常用技術(shù)(包括分類、聚類、協(xié)同過濾和異常檢測(cè))應(yīng)用于以下的領(lǐng)域:基因組學(xué)、安全工作和金融。此更新版本還涵蓋圖像處理和Spark NLP庫(kù)。如果你對(duì)機(jī)器學(xué)習(xí)和統(tǒng)計(jì)學(xué)有基本的了解,并且能夠使用Python進(jìn)行編程,那么本書將幫助你開始進(jìn)行大規(guī)模的數(shù)據(jù)分析。
前言Apache Spark 從MPI(消息傳遞接口)到MapReduce 的過程源遠(yuǎn)流長(zhǎng),使其可以寫出利用大量資源的同時(shí)分離出分布式系統(tǒng)基本細(xì)節(jié)的程序。盡管數(shù)據(jù)處理需求推動(dòng)了這些框架的發(fā)展,但在某種程度上,大數(shù)據(jù)領(lǐng)域已經(jīng)與它們息息相關(guān),其范圍由這些框架可以處理的內(nèi)容定義。Spark 最初的承諾是讓這個(gè)過程更進(jìn)一步,讓編寫分布式程序感覺就像編寫常規(guī)程序一樣。Spark 的普及與Python 數(shù)據(jù)(PyData)生態(tài)系統(tǒng)的日益風(fēng)行同步發(fā)展。因此,Spark 的Python API(PySpark)在過去幾年中的流行速度明顯增長(zhǎng)是有道理的。盡管PyData 生態(tài)系統(tǒng)最近興起了一些分布式程序的選項(xiàng),但Apache Spark 仍是處理跨行業(yè)領(lǐng)域的大型數(shù)據(jù)集最受歡迎的選擇之一。歸因于PySpark 其他PyData 工具的整合,該框架可以幫助數(shù)據(jù)科學(xué)從業(yè)者顯著提高生產(chǎn)力。我們一致認(rèn)為教授數(shù)據(jù)科學(xué)的最佳方式是通過示例。為此,我們整理了一本關(guān)于應(yīng)用程序的書籍,涉及大規(guī)模數(shù)據(jù)分析中最常見的算法、數(shù)據(jù)集和設(shè)計(jì)模式之間的交互。這本書并不是要從頭到尾閱讀,它看起來只是像你極力需要完成的事情,或是為了激發(fā)你開始學(xué)習(xí)的興趣。為何寫這本書Apache Spark 在2020 年經(jīng)歷了一次主要版本的升級(jí)版本30。最大的改進(jìn)之一是引入了Spark 自適應(yīng)執(zhí)行優(yōu)化系統(tǒng)。此功能消除了大部分調(diào)試和優(yōu)化的復(fù)雜性。因?yàn)樗?Spark 32 及更高版本中默認(rèn)打開,所以我們?cè)跁胁⑽刺峒暗剿,你將自然而然的獲益。生態(tài)系統(tǒng)的變化,結(jié)合Spark 最新的主要版本,使這個(gè)版本成為一個(gè)與時(shí)俱進(jìn)的版本。與以前選擇Scala 版本的Advanced Analytics with Spark 不同,我們將使用Python 作為主要工具。本書將包含與更廣泛的Python 數(shù)據(jù)科學(xué)生態(tài)系統(tǒng)相結(jié)合的最佳實(shí)踐。所有章節(jié)都已更新為使用最新版本的PySpark API,并增加了兩個(gè)新章節(jié)和對(duì)多個(gè)章節(jié)進(jìn)行改寫,不會(huì)對(duì)Spark 的流處理和圖像處理庫(kù)進(jìn)行介紹。隨著Spark 進(jìn)入成熟和穩(wěn)定的新時(shí)代,我們希望這些變化將在未來幾年把本書作為有用的分析資料保存下來。本書的組織結(jié)構(gòu)第1 章把Spark 和PySpark 置于更廣泛的數(shù)據(jù)科學(xué)和大數(shù)據(jù)分析的背景下。之后,每章都將使用PySpark 對(duì)數(shù)據(jù)進(jìn)行了獨(dú)立的分析。第2 章通過一個(gè)數(shù)據(jù)清洗實(shí)例介紹PySpark 和Python 中數(shù)據(jù)處理的基礎(chǔ)知識(shí)。接下來的幾章將深入探討如何使用Spark 進(jìn)行機(jī)器學(xué)習(xí),并在經(jīng)典應(yīng)用中應(yīng)用一些最常用的算法。剩下的幾章則是一些零散的應(yīng)用,比如通過文本中的潛在語(yǔ)義關(guān)系查詢維基百科、分析基因組學(xué)數(shù)據(jù)、識(shí)別相似圖像等。本書不討論P(yáng)ySpark 的優(yōu)點(diǎn)和缺點(diǎn)以及一些其他內(nèi)容。本書介紹了Spark 編程模型和Spark 的Python API PySpark 的基礎(chǔ)知識(shí)。不過,本書并不打算成為Spark 的參考資料或提供全面的Spark 使用指南。本書不打算成為機(jī)器學(xué)習(xí)、統(tǒng)計(jì)學(xué)或線性代數(shù)的參考資料,盡管很多章節(jié)在使用這些內(nèi)容之前都會(huì)提供一些背景知識(shí)。相反,本書將通過涵蓋整個(gè)流程來幫助讀者感受使用PySpark 對(duì)大型數(shù)據(jù)集進(jìn)行復(fù)雜分析的感覺,不僅是構(gòu)建和評(píng)估模型,還包括清洗、預(yù)處理和探索數(shù)據(jù),并注重將結(jié)果轉(zhuǎn)化為生產(chǎn)應(yīng)用程序的過程。我們相信,最好的教學(xué)方式是通過實(shí)踐。以下是本書要處理的一些任務(wù)示例:預(yù)測(cè)森林覆蓋我們使用決策樹,并利用位置和土壤類型等相關(guān)特征預(yù)測(cè)森林覆蓋類型(見第4 章)。查詢維基百科相似條目我們通過使用NLP(自然語(yǔ)言處理)技術(shù)識(shí)別條目之間的關(guān)系并查詢維基百科語(yǔ)料庫(kù)(見第6 章)。了解紐約出租車的使用情況我們通過執(zhí)行時(shí)間和地理空間分析,計(jì)算出租車的平均等待時(shí)間作為位置函數(shù)(見第7 章)。降低投資組合風(fēng)險(xiǎn)我們使用蒙特卡羅模擬估計(jì)投資組合的財(cái)務(wù)風(fēng)險(xiǎn)(見第9 章)。如果可能,我們不僅嘗試提供解決方案,還試圖展示完整的數(shù)據(jù)科學(xué)工作流程,包括所有的迭代(iterations)、終結(jié)點(diǎn)(dead ends)以及重新運(yùn)行(restarts)。本書將有助于你更加熟悉Python、Spark、機(jī)器學(xué)習(xí)和數(shù)據(jù)分析。然而,這些都是為了一個(gè)更大的目標(biāo),我們希望本書的大部分內(nèi)容將教會(huì)你如何處理前面描述的任務(wù)。每章大約有幾十頁(yè)的篇幅,將盡可能地演示如何構(gòu)建一個(gè)數(shù)據(jù)應(yīng)用程序。排版約定本書采用以下排版約定。斜體(Italic)表示新術(shù)語(yǔ)、URL、電子郵件地址、文件名和文件擴(kuò)展名。等寬字體(Constant Width)表示程序清單,在段落內(nèi)表示程序元素,例如變量、函數(shù)名稱、數(shù)據(jù)庫(kù)、數(shù)據(jù)類型、環(huán)境變量、語(yǔ)句和關(guān)鍵字。粗體等寬字體(Constant width bold)表示應(yīng)由用戶原封不動(dòng)輸入的命令或其他文本。斜體等寬字體(Constant width italic)表示應(yīng)該替換成用戶提供值的文本,或者由上下文決定的值。使用代碼示例補(bǔ)充材料(代碼示例、練習(xí)等)可以通過網(wǎng)址下載:https://githubcom/sryza/aas。與本書相關(guān)的技術(shù)問題,或者在使用代碼示例上有疑問,請(qǐng)發(fā)電子郵件到errata@oreillycomcn。本書的目的是幫助你完成工作。一般來說,本書提供的示例代碼,你可以在自己的程序或文檔中使用而無(wú)需聯(lián)系我們獲取許可,除非你需要復(fù)制大量代碼。例如,使用本書中的代碼片段編寫程序無(wú)需授權(quán)許可,但銷售或發(fā)行OReilly圖書中的示例則需要獲得許可。引用本書中的示例代碼回答問題無(wú)需獲得許可。但在產(chǎn)品文檔中本書中使用大量示例代碼則需要獲得許可。我們很希望但并不強(qiáng)制要求你在引用本書內(nèi)容時(shí)加上引用說明。引用說明一般包括書名、作者、出版社和ISBN,例如:Advanced Analytics with PySpark by Akash Tandon, Sandy Ryza, Uri Laserson, Sean Owen, and Josh Wills (OReilly) Copyright 2022 Akash Tandon, 978-1-098-10365-1。如果你覺得自己對(duì)示例代碼的使用超出了上述許可范圍, 請(qǐng)通過permissions@oreillycom 與我們聯(lián)系。OReilly 在線學(xué)習(xí)平臺(tái)(OReilly Online Learning)近40 年來,OReilly Media 致力于提供技術(shù)和商業(yè)培訓(xùn)、知識(shí)和卓越見解,來幫助眾多公司取得成功。公司獨(dú)有的專家和改革創(chuàng)新者網(wǎng)絡(luò)通過OReilly 書籍、文章以及在線學(xué)習(xí)平臺(tái),分享他們的專業(yè)知識(shí)和實(shí)踐經(jīng)驗(yàn)。OReilly 在線學(xué)習(xí)平臺(tái)按照您的需要提供實(shí)時(shí)培訓(xùn)課程、深入學(xué)習(xí)渠道、交互式編程環(huán)境以及來自O(shè)Reilly 和其他200 多家出版商的大量書籍與視頻資料。更多信息,請(qǐng)?jiān)L問網(wǎng)站:https://wwworeillycom/。聯(lián)系我們?nèi)魏斡嘘P(guān)本書的意見或疑問,請(qǐng)按照以下地址聯(lián)系出版社。美國(guó):OReilly Media, Inc1005 Gravenstein Highway NorthSebastopol, CA 95472中國(guó):北京市西城區(qū)西直門南大街2 號(hào)成銘大廈C 座807 室(100035)奧萊利技術(shù)咨詢(北京)有限公司勘誤、示例和其他信息可訪問https://oreilly/adv-analytics-pyspark 獲取。對(duì)本書的評(píng)論或技術(shù)疑問,可以發(fā)電子郵件到errata@oreillycomcn。欲了解本社圖書和課程的新聞和信息,請(qǐng)?jiān)L問我們的網(wǎng)站http://oreillycom。我們的LinkedIn:https://linkedincom/company/oreilly-media。我們的Twitter:http://twittercom/oreillymedia。我們的YouTube:http://youtubecom/oreillymedia。致謝毫無(wú)疑問,如果沒有Apache Spark 和MLlib 的存在,就不會(huì)有本書。我們都應(yīng)該感謝構(gòu)建和它的開源團(tuán)隊(duì),以及為它添加內(nèi)容的數(shù)百名貢獻(xiàn)者。我們要感謝每一位花了大量時(shí)間并以專業(yè)角度審閱本書前幾版內(nèi)容的人:Michael Bernico、Adam Breindel、Ian Buss、Parviz Deyhim、Jeremy Freeman、Chris Fregly、Debashish Ghosh、Juliet Hougland、Jonathan Keebler、Nisha Muktewar、Frank Nothaft、Nick Pentreath、Kostas Sakellis、Tom White、Marcelo Vanzin 和Juliet Hougland。感謝大家! 這極大地改善了本書最終版本的結(jié)構(gòu)和質(zhì)量。Sandy 還要感謝Jordan Pinkus 和Richard Wang,感謝他們?cè)陲L(fēng)險(xiǎn)這一章的理論方面給予幫助。感謝Jeff Bleiel 和OReilly 為本書的出版提供了寶貴的經(jīng)驗(yàn)和大力支持。
Akash Tandon是Looppanel的聯(lián)合創(chuàng)始人兼首席技術(shù)官。曾在Atlan擔(dān)任高級(jí)數(shù)據(jù)工程師。Sandy Ryza是Apache Spark的核心貢獻(xiàn)人,領(lǐng)導(dǎo)了Dagster項(xiàng)目的開發(fā)。Uri Laserson是Patch Biosciences 的創(chuàng)始人兼首席技術(shù)官。曾在Cloudera從事大數(shù)據(jù)和基因組學(xué)的研究。Sean Owen是Apache Spark的核心貢獻(xiàn)人和PMC(項(xiàng)目管理委員會(huì))的成員,同時(shí)也是Databricks專注于機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)的首席解決方案架構(gòu)師。Josh Wills是WeaveGrid的軟件工程師,也是Slack的前數(shù)據(jù)工程主管。
目錄前言 1第1 章 大數(shù)據(jù)分析 711 使用大數(shù)據(jù) 812 Apache Spark 和PySpark10121 組件 10122 PySpark 12123 生態(tài)系統(tǒng) 1313 Spark 30 1414 PySpark 處理數(shù)據(jù)科學(xué)問題 1515 本章小結(jié)16第2 章 PySpark 數(shù)據(jù)分析簡(jiǎn)介 1721 Spark 架構(gòu) 1922 安裝PySpark 2123 設(shè)置我們的數(shù)據(jù) 2424 使用DataFrame API 分析數(shù)據(jù) 3125 DataFrames 的快速匯總統(tǒng)計(jì) 3526 DataFrame 的透視和重塑 3727 關(guān)聯(lián)DataFrame 并選擇特征4028 評(píng)分和模型評(píng)估 4229 本章小結(jié)44第3 章 音樂推薦和音頻編碼器的數(shù)據(jù)集 4731 設(shè)置數(shù)據(jù)4832 我們對(duì)推薦系統(tǒng)的要求 5133 數(shù)據(jù)準(zhǔn)備5534 構(gòu)建第一個(gè)模型 5835 算法篩查推薦 6236 推薦質(zhì)量評(píng)估 6437 計(jì)算AUC 6638 選擇超參數(shù) 6839 給出推薦71310 本章小結(jié) 72第4 章 使用決策樹和決策森林進(jìn)行預(yù)測(cè) 7541 決策樹和決策森林 7642 準(zhǔn)備數(shù)據(jù)7943 第一顆決策樹 8444 決策樹超參數(shù) 9245 調(diào)試決策樹 9446 重溫分類特征 9847 隨機(jī)森林10248 進(jìn)行預(yù)測(cè)10549 本章小結(jié)105第5 章 異常檢測(cè)與K-means 聚類算法 10751 K-means 聚類 10852 識(shí)別異常網(wǎng)絡(luò)流量 10953 初次嘗試聚類 11254 選擇K 值 11455 利用SparkR 實(shí)現(xiàn)可視化 11856 特征歸一化 12357 分類變量12458 使用熵(Entropy)標(biāo)簽 12659 聚類實(shí)戰(zhàn)128510 本章小結(jié) 130第6 章 通過LDA、Spark NLP 了解維基百科 13361 隱含狄利克雷分布 13462 獲取數(shù)據(jù)13563 Spark NLP 13764 解析數(shù)據(jù)13965 使用Spark NLP 準(zhǔn)備數(shù)據(jù) 14166 TF-IDF 14667 計(jì)算TF-IDF 14768 創(chuàng)建LDA 模型 14869 本章小結(jié)151第7 章 基于出租車行程數(shù)據(jù)的時(shí)空序列數(shù)據(jù)分析 15371 數(shù)據(jù)準(zhǔn)備155711 將日期格式字符串轉(zhuǎn)換為時(shí)間戳 157712 處理無(wú)效記錄 15972 地理空間分析 161721 介紹GeoJSON 161722 GeoPandas 16373 PySpark 會(huì)話化 16674 本章小結(jié)170第8 章 金融風(fēng)險(xiǎn)評(píng)估 17181 金融術(shù)語(yǔ)17282 VaR 的計(jì)算方法 173821 方差與協(xié)方差 173822 歷史模擬法 173823 蒙特卡羅模擬 17483 我們的模型 17484 獲取數(shù)據(jù)17585 準(zhǔn)備數(shù)據(jù)17786 決定因子權(quán)重 18087 抽樣 18488 試驗(yàn)運(yùn)行18789 可視化收益分布 191810 本章小結(jié) 192第9 章 分析基因組學(xué)數(shù)據(jù)和BDG 項(xiàng)目 19391 從建模中解耦存儲(chǔ) 19492 設(shè)置ADAM 19793 介紹如何使用ADAM 處理基因組數(shù)據(jù) 198931 使用ADAM CLI 進(jìn)行文件格式轉(zhuǎn)換 199932 使用PySpark 和ADAM 采集基因組學(xué)數(shù)據(jù) 20094 預(yù)測(cè)轉(zhuǎn)錄因子結(jié)合位點(diǎn) 20695 本章小結(jié)212第10 章 基于深入學(xué)習(xí)和PySpark LSH 的圖像相似度檢測(cè) 215101 PyTorch 216102 準(zhǔn)備數(shù)據(jù) 217103 圖像矢量表示的深度學(xué)習(xí)模型 2191031 圖像嵌入 2191032 將圖像嵌入導(dǎo)入 PySpark 222104 使用PySpark LSH 進(jìn)行圖像相似搜索 223105 本章小結(jié) 228第11 章 使用MLflow 管理機(jī)器學(xué)習(xí)生命周期 229111 機(jī)器學(xué)習(xí)生命周期 229112 MLflow 231113 實(shí)驗(yàn)跟蹤 232114 管理和服務(wù)ML 模型 236115 創(chuàng)建并使用MLflow 項(xiàng)目 239116 本章小結(jié) 243