關(guān)于我們
書單推薦
新書推薦
|
Python大學(xué)教程:面向計(jì)算機(jī)科學(xué)和數(shù)據(jù)科學(xué)(英文版) 通過本書,你將學(xué)習(xí): 平衡計(jì)算機(jī)科學(xué)基礎(chǔ)知識(shí)的教學(xué)和數(shù)據(jù)科學(xué)技術(shù)的實(shí)踐,在大量程序庫(kù)的支持下僅編寫少量代碼即可完成實(shí)際任務(wù) 前 言 “塔爾山上有黃金!1 在過去的幾十年中,很多發(fā)展趨勢(shì)一一顯現(xiàn)。計(jì)算機(jī)的硬件速度越來越快,價(jià)格越來越便宜,尺寸越來越小。網(wǎng)絡(luò)帶寬(攜帶信息的能力)越來越大,價(jià)格越來越便宜。同時(shí)軟件規(guī)模越來越龐大,而“開源”運(yùn)動(dòng)又將它們變成完全免費(fèi)或者接近免費(fèi)。短時(shí)間內(nèi),“物聯(lián)網(wǎng)”將數(shù)十億各種各樣的設(shè)備連接起來,并快速產(chǎn)生了大規(guī)模的數(shù)據(jù)。 幾年之前,如果有人讓我們寫一本主題為“大數(shù)據(jù)”和“云計(jì)算”的大學(xué)階段編程入門教材,并且在封面上繪制一只彩色的大象(象征“巨大”),我們可能會(huì)如此反應(yīng):“嗯?”如果他們繼續(xù)讓我們?cè)跁心依ˋI(人工智能),我們可能會(huì)說:“真的嗎?這對(duì)于編程初學(xué)者會(huì)不會(huì)過于超前了?” 如果有人讓我們?cè)跁屑由稀皵?shù)據(jù)科學(xué)”,我們可能會(huì)問:“計(jì)算機(jī)科學(xué)不是已經(jīng)包含了數(shù)據(jù)嗎?為什么我們需要為此單獨(dú)分一個(gè)科目?”好吧,如今談及程序設(shè)計(jì),最酷的說法就是“什么都是數(shù)據(jù)”—數(shù)據(jù)科學(xué)、數(shù)據(jù)分析、大數(shù)據(jù)、關(guān)系數(shù)據(jù)庫(kù)(SQL)以及NoSQL和NewSQL數(shù)據(jù)庫(kù)。 如今我們真的寫了這樣一本書!歡迎閱讀! 在本書中,你將會(huì)著手學(xué)習(xí)當(dāng)今最引人入勝、最前沿的計(jì)算技術(shù)—你將會(huì)看到,它將計(jì)算機(jī)科學(xué)和數(shù)據(jù)科學(xué)輕松地結(jié)合在一起,是一門適用于這些學(xué)科和相關(guān)學(xué)科的入門課程。此外,你將使用Python進(jìn)行編程—世界上發(fā)展速度最快、最流行的編程語(yǔ)言之一。在前言中,我們將展示這本書的“靈魂”。 專業(yè)程序員常常很快喜歡上Python。他們欣賞Python的表現(xiàn)力、易讀性、簡(jiǎn)潔性和交互性。他們喜歡開源軟件世界,這個(gè)世界正在為廣泛的應(yīng)用領(lǐng)域不斷生成可復(fù)用的軟件。 無論你是教師、初學(xué)者或者有經(jīng)驗(yàn)的專業(yè)人士,這本書都將對(duì)你有所幫助。Python對(duì)于初學(xué)者而言是優(yōu)秀的第一門編程語(yǔ)言,并且適用于開發(fā)工業(yè)級(jí)的應(yīng)用。對(duì)于新人而言,本書前面的章節(jié)奠定了堅(jiān)實(shí)的編程基礎(chǔ)。 我們希望你在這本書中學(xué)到知識(shí),并且發(fā)現(xiàn)快樂與挑戰(zhàn)。徜徉其中,享受樂趣。 將Python用于計(jì)算機(jī)科學(xué)和數(shù)據(jù)科學(xué)教學(xué) 許多頂尖的美國(guó)大學(xué)使用Python作為介紹計(jì)算機(jī)科學(xué)的語(yǔ)言,“CS學(xué)科排名前10的有8個(gè)(80%)、排名前39的有27個(gè)(69%)使用Python”2。Python如今在教學(xué)和科學(xué)計(jì)算中尤其受到歡迎3,最近已超過R語(yǔ)言并成為最受歡迎的數(shù)據(jù)科學(xué)編程語(yǔ)言4,5,6。 模塊化體系結(jié)構(gòu) 我們預(yù)計(jì)計(jì)算機(jī)科學(xué)的本科生課程將會(huì)包含數(shù)據(jù)科學(xué)部分—這本書為此而設(shè)計(jì),并且在Python編程方面滿足數(shù)據(jù)科學(xué)入門課程的需求。 本書的模塊化體系結(jié)構(gòu)幫助我們滿足計(jì)算機(jī)科學(xué)、數(shù)據(jù)科學(xué)和其他相關(guān)受眾的多樣化需求。教師能方便地進(jìn)行調(diào)整,為不同專業(yè)的學(xué)生開設(shè)系列課程。 第1~11章介紹傳統(tǒng)的計(jì)算機(jī)科學(xué)編程主題。第1~10章每章都包含可選的、簡(jiǎn)潔的“數(shù)據(jù)科學(xué)入門”一節(jié),介紹人工智能、基礎(chǔ)統(tǒng)計(jì)、趨中和離中度量、模擬、靜態(tài)/動(dòng)態(tài)可視化、CSV文件的使用、數(shù)據(jù)探索和數(shù)據(jù)整理的pandas庫(kù)、時(shí)間序列和簡(jiǎn)單的線性回歸。這會(huì)幫助你學(xué)習(xí)第12~17章中的數(shù)據(jù)科學(xué)、AI、大數(shù)據(jù)和云計(jì)算相關(guān)的案例研究,你能在真實(shí)世界數(shù)據(jù)集中完整地使用這些案例研究。 學(xué)完第1~5章中的Python相關(guān)知識(shí)以及第6~7章中的一些關(guān)鍵部分,你已經(jīng)能夠在第12~17章中解決數(shù)據(jù)科學(xué)、AI和大數(shù)據(jù)案例研究中的關(guān)鍵用例,這對(duì)于所有的編程通識(shí)課都是實(shí)用的: 計(jì)算機(jī)科學(xué)方面的課程可以著重于第1~11章并略講第1~10章的“數(shù)據(jù)科學(xué)入門”部分。教師還可以介紹第12~17章中的部分或者全部案例研究。 數(shù)據(jù)科學(xué)方面的課程可以略講第1~11章,著重于大部分或者全部的第1~10章中的“數(shù)據(jù)科學(xué)入門”部分以及第12~17章中的案例研究。 前言中的“章節(jié)依賴關(guān)系”部分將展示本書的獨(dú)特架構(gòu)并幫助教師規(guī)劃個(gè)性化的教學(xué)大綱。 第12~17章的內(nèi)容很酷、很強(qiáng)大、很現(xiàn)代。其中包含能動(dòng)手實(shí)現(xiàn)的案例研究,例如有監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)、深度學(xué)習(xí)、強(qiáng)化學(xué)習(xí)(在習(xí)題中)、自然語(yǔ)言處理、Twitter數(shù)據(jù)挖掘、IBM Watson可視化計(jì)算、大數(shù)據(jù)以及其他內(nèi)容。在這個(gè)過程中,你將會(huì)掌握數(shù)據(jù)科學(xué)的大量術(shù)語(yǔ)和概念,包括術(shù)語(yǔ)的定義以及在不同規(guī)模的程序中使用的概念。 本書讀者對(duì)象 模塊化的結(jié)構(gòu)使得本書適用于以下讀者: 所有標(biāo)準(zhǔn)的Python計(jì)算機(jī)科學(xué)及相關(guān)專業(yè)。首先,我們的書是一本現(xiàn)代的、可靠的Python CS1入門教材。ACM/IEEE的計(jì)算課程建議列出了5個(gè)類別:計(jì)算機(jī)工程、計(jì)算機(jī)科學(xué)、信息系統(tǒng)、信息技術(shù)和軟件工程7。這本書對(duì)這些類別都適用。 數(shù)據(jù)科學(xué)專業(yè)的本科生課程。我們的書對(duì)許多數(shù)據(jù)科學(xué)課程都是有用的。對(duì)于入門級(jí)課程而言,它遵循課程建議,整合了所有課程的關(guān)鍵領(lǐng)域。在計(jì)算機(jī)科學(xué)或者數(shù)據(jù)科學(xué)課程計(jì)劃中,本書都可以作為第一本專業(yè)教材,也可用作高年級(jí)課程的Python參考書。 非計(jì)算機(jī)和數(shù)據(jù)科學(xué)專業(yè)學(xué)生的輔修課程。 數(shù)據(jù)科學(xué)的研究生課程。這本書可以作為入門級(jí)課程的主要教材,也可以作為高年級(jí)課程的Python參考書。 兩年制學(xué)院。這些學(xué)校會(huì)為準(zhǔn)備進(jìn)入四年制學(xué)院的數(shù)據(jù)科學(xué)專業(yè)的學(xué)生開設(shè)相關(guān)課程—這本書就是一個(gè)合適的選擇。 高中。就像出于強(qiáng)烈的興趣愛好而開設(shè)計(jì)算機(jī)課程一樣,很多高中已經(jīng)開設(shè)了Python編程和數(shù)據(jù)科學(xué)課程8。最近在LinkedIn上發(fā)表的一篇文章寫道:“高中就應(yīng)該教授數(shù)據(jù)科學(xué),課程應(yīng)該直面我們的學(xué)生將要選擇的職業(yè)類型,直接關(guān)注工作和技術(shù)的發(fā)展方向!9我們相信數(shù)據(jù)科學(xué)很快就會(huì)成為一門受歡迎的大學(xué)先修課程并且最終會(huì)有數(shù)據(jù)科學(xué)的AP考試。 專業(yè)行業(yè)培訓(xùn)課程。 本書主要特色 保持簡(jiǎn)潔,保持短小,保持新穎 保持簡(jiǎn)潔(KIS)。在書的各個(gè)方面以及教師和學(xué)生資源中,我們都力求簡(jiǎn)單明了。例如,在寫自然語(yǔ)言處理的時(shí)候,我們使用了簡(jiǎn)潔直觀的TextBlob庫(kù)而不是更為復(fù)雜的NLTK。一般情況下,當(dāng)有多個(gè)庫(kù)都能完成相近的任務(wù)時(shí),我們選擇最簡(jiǎn)單的一個(gè)。 保持短。↘IS)。本書的538個(gè)案例研究中大多數(shù)都很短小—伴隨交互式IPython的即時(shí)反饋,通常只有幾行代碼。我們大約只在40個(gè)大型腳本和完整案例研究中使用了較長(zhǎng)的代碼示例。 保持新穎(KIT)。我們查閱了大量最新的Python編程和數(shù)據(jù)科學(xué)教材以及專業(yè)書籍,瀏覽、閱讀或者觀看了大約15 000篇最新的文獻(xiàn)、研究論文、白皮書、視頻、博客文章、論壇文章和文檔。這讓我們能夠“把握”Python、計(jì)算機(jī)科學(xué)、數(shù)據(jù)科學(xué)、AI、大數(shù)據(jù)和云計(jì)算社區(qū)的脈搏,從而創(chuàng)建出1566個(gè)嶄新的案例研究、習(xí)題和項(xiàng)目(EEP)。 IPython的實(shí)時(shí)反饋、搜索、發(fā)現(xiàn)和實(shí)驗(yàn)教學(xué)方法 學(xué)習(xí)這本書的理想方法是閱讀它并同時(shí)運(yùn)行代碼示例。在整本書中,我們使用了IPython解釋器,它采用一種友好的、實(shí)時(shí)反饋的模式,能夠在Python及其擴(kuò)展庫(kù)上快速進(jìn)行搜索、發(fā)現(xiàn)和實(shí)驗(yàn)。 大多數(shù)代碼都在小型的可交互的IPython會(huì)話中展示。你所寫的每一個(gè)代碼片段,IPython能夠立即讀取然后計(jì)算并給出結(jié)果。這種即時(shí)反饋使你保持注意力,并助力學(xué)習(xí)過程、支撐原型設(shè)計(jì)和加速軟件開發(fā)過程。 我們的書總是強(qiáng)調(diào)現(xiàn)場(chǎng)代碼的教學(xué)方法,通過樣例輸入和結(jié)果顯示,專注于程序的完整和可運(yùn)行。IPython的“魔力”在于將代碼片段轉(zhuǎn)換為實(shí)時(shí)代碼,每當(dāng)你輸入一行時(shí),這些代碼就會(huì)“活起來”。這有助于學(xué)習(xí)并鼓勵(lì)動(dòng)手實(shí)驗(yàn)。 IPython是學(xué)習(xí)常見錯(cuò)誤的報(bào)錯(cuò)信息的好方法。我們有時(shí)故意犯錯(cuò)來告知你將發(fā)生什么,因此,當(dāng)我們說某件事是錯(cuò)誤的時(shí)候,試試看會(huì)發(fā)生什么。 本書配有557道自檢習(xí)題(適合于“翻轉(zhuǎn)課堂”,稍后介紹)和471個(gè)章末習(xí)題和項(xiàng)目,它們中的大多數(shù)遵循了同樣的實(shí)時(shí)反饋理念。 Python編程基礎(chǔ) 首先,本書是一本Python入門教材。我們提供了豐富的Python編程知識(shí)和常規(guī)的編程基礎(chǔ)內(nèi)容。 我們討論了Python的編程模型—過程式編程、函數(shù)式編程和面向?qū)ο缶幊獭?/p> 我們強(qiáng)調(diào)解決問題和算法設(shè)計(jì)。 我們?yōu)闇?zhǔn)備進(jìn)入產(chǎn)業(yè)界的學(xué)生準(zhǔn)備了最好的習(xí)題。 函數(shù)式編程貫穿全書。第4章中的一個(gè)圖表展示了Python中關(guān)鍵的函數(shù)式編程能力及其對(duì)應(yīng)的章節(jié)。 538個(gè)案例研究以及471個(gè)習(xí)題和項(xiàng)目 學(xué)生通過動(dòng)手實(shí)踐的方法,在廣泛選擇的真實(shí)世界案例研究、習(xí)題和項(xiàng)目(EEP)中開展學(xué)習(xí),這些內(nèi)容來自計(jì)算機(jī)科學(xué)、數(shù)據(jù)科學(xué)和其他很多領(lǐng)域。 538個(gè)案例研究的內(nèi)容均圍繞計(jì)算機(jī)科學(xué)、數(shù)據(jù)科學(xué)、人工智能和大數(shù)據(jù),從單個(gè)代碼片段到完整案例研究均有涉及。 471個(gè)習(xí)題和項(xiàng)目自然地拓展了章節(jié)中的示例。每章都以一系列涵蓋了各種主題的習(xí)題作為結(jié)尾,這有助于教師根據(jù)受眾的需求調(diào)整課程內(nèi)容并且在每個(gè)學(xué)期布置不同的作業(yè)。 EEP向你提供了引人入勝的、富有挑戰(zhàn)性的、有趣的Python基礎(chǔ)知識(shí),包括可以上手實(shí)驗(yàn)的AI、計(jì)算機(jī)科學(xué)和數(shù)據(jù)科學(xué)項(xiàng)目。 學(xué)生將面對(duì)令人興奮且有趣的有關(guān)AI、大數(shù)據(jù)和云技術(shù)應(yīng)用問題的挑戰(zhàn),比如自然語(yǔ)言處理、Twitter數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、Hadoop、MapReduce、Spark、IBM Watson、關(guān)鍵的數(shù)據(jù)科學(xué)庫(kù)(NumPy、pandas、SciPy、NLTK、TextBlob、spaCy、BeautifulSoup、Textatistic、Tweepy、Scikit-learn、Keras)、關(guān)鍵的可視化庫(kù)(Matplotlib、Seaborn、Folium)以及其他。 我們的EEP鼓勵(lì)你思考未來。下述案例研究雖然只出現(xiàn)在前言中,但本書包含了多個(gè)發(fā)人深省的類似項(xiàng)目:利用深度學(xué)習(xí)、物聯(lián)網(wǎng)以及電視攝像機(jī)(由體育賽事數(shù)據(jù)訓(xùn)練出來的),我們可以自動(dòng)進(jìn)行數(shù)據(jù)分析、回顧比賽細(xì)節(jié)以及即時(shí)回放,因此球迷不再需要忍受直播體育賽事的誤判和延遲。既然如此,我們可能會(huì)產(chǎn)生這樣的想法:可以使用這些技術(shù)來取消裁判。為什么不呢?我們已經(jīng)越來越多地把自己的生命托付給基于深度學(xué)習(xí)的技術(shù),比如機(jī)器人外科醫(yī)生和自動(dòng)駕駛汽車。 項(xiàng)目習(xí)題鼓勵(lì)你更加深入地了解所學(xué)的知識(shí)并研究本書沒有涉及的技術(shù)。真正的項(xiàng)目通常規(guī)模更大,需要更多的網(wǎng)絡(luò)搜索和實(shí)現(xiàn)代價(jià)。 在教師手冊(cè)中,我們提供了許多習(xí)題的答案,包括第1~11章中核心的Python代碼。答案僅對(duì)教師可見,詳見后文中關(guān)于Pearson教師資源的介紹。我們沒有提供項(xiàng)目和研究習(xí)題的答案。 我們鼓勵(lì)你仔細(xì)觀看示例和開源代碼案例研究(詳見GitHub網(wǎng)頁(yè)),包括課程級(jí)別項(xiàng)目、學(xué)期級(jí)別項(xiàng)目、專業(yè)方向級(jí)別項(xiàng)目、畢業(yè)設(shè)計(jì)項(xiàng)目和畢業(yè)論文。 557道自檢習(xí)題及其答案 平均每個(gè)小節(jié)后有三道自檢習(xí)題。 自檢習(xí)題的類型包括填空、判斷和討論,能幫你測(cè)試是否理解了所學(xué)的內(nèi)容。 IPython交互式自檢習(xí)題可幫助你不斷嘗試并強(qiáng)化所學(xué)的編程技術(shù)。 為快速掌握所學(xué)知識(shí),自檢習(xí)題后面都跟有答案。 避免煩瑣的數(shù)學(xué)語(yǔ)言,多用自然語(yǔ)言進(jìn)行解釋 數(shù)據(jù)科學(xué)的主題與數(shù)學(xué)高度相關(guān)。這本書將用作計(jì)算機(jī)科學(xué)和數(shù)據(jù)科學(xué)第一門課的教科書,學(xué)生可能沒有深厚的數(shù)學(xué)知識(shí)背景,所以我們避免了煩瑣的數(shù)學(xué)語(yǔ)言,把數(shù)學(xué)內(nèi)容留在高層次的課程中。 在案例研究、習(xí)題和項(xiàng)目中,我們關(guān)注數(shù)學(xué)的概念而不是細(xì)節(jié)。我們使用statistics、NumPy、SciPy、pandas等Python庫(kù)和其他的很多庫(kù)來解決問題,從而隱藏了數(shù)學(xué)復(fù)雜性。所以,學(xué)生能夠直接使用數(shù)學(xué)技術(shù)(如線性回歸),而不需要知道背后的數(shù)學(xué)知識(shí)。在機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的案例研究中,我們專注于創(chuàng)建在“幕后”做數(shù)學(xué)運(yùn)算的對(duì)象—這是基于對(duì)象編程的關(guān)鍵之一。這個(gè)做法等同于安全地駕駛一輛汽車前往目的地時(shí)不需要知道制造引擎、變速箱、動(dòng)力轉(zhuǎn)向和防滑剎車系統(tǒng)背后的數(shù)學(xué)、工程和科學(xué)知識(shí)。 可視化 67張可視化結(jié)果圖幫助你理解概念,包含二維或三維的、靜態(tài)的、動(dòng)態(tài)的、動(dòng)畫的和交互式的圖表、圖形、圖片、動(dòng)畫等。 我們關(guān)注由Matplotlib、Seaborn、pandas和Folium(用于交互式地圖)產(chǎn)生的高層可視化結(jié)果。 我們使用可視化作為教學(xué)工具。例如,我們使用動(dòng)態(tài)滾壓模型和柱狀圖使大數(shù)定律“鮮活”起來。隨著滾動(dòng)數(shù)量的增加,你將看到每個(gè)面在滾動(dòng)總數(shù)中所占的百分比逐漸接近16.667%(1/6),代表百分比的柱條也趨于一致。 你需要了解自己的數(shù)據(jù)。一種簡(jiǎn)單的辦法是直接看原始數(shù)據(jù)。即使是少量的數(shù)據(jù),你也可能很快迷失在細(xì)節(jié)當(dāng)中。對(duì)于大數(shù)據(jù)而言,可視化對(duì)于數(shù)據(jù)探索和傳遞可復(fù)制的研究結(jié)果尤為重要,數(shù)據(jù)規(guī)模可能是百萬級(jí)的、上億的甚至更為龐大。通常而言,一圖勝千言10—在大數(shù)據(jù)中,一個(gè)可視化結(jié)果能夠比得上數(shù)據(jù)庫(kù)中數(shù)億甚至更多的個(gè)體。 有時(shí)候,你需要“飛到離數(shù)據(jù)40 000英尺高”才能在“大范圍”看到它。描述性統(tǒng)計(jì)當(dāng)然有幫助,但是也可能產(chǎn)生誤導(dǎo)。你將在習(xí)題中研究Anscombe四重奏,這個(gè)案例研究通過可視化直觀地表明:差異顯著的數(shù)據(jù)集可能產(chǎn)生幾乎相同的描述性統(tǒng)計(jì)。 我們展示了可視化結(jié)果和動(dòng)畫代碼以便你能夠自己實(shí)現(xiàn)。我們也通過Jupyter Notebook的形式給出動(dòng)畫的源代碼文件,便于你自定義代碼和動(dòng)畫參數(shù),進(jìn)而重新執(zhí)行動(dòng)畫,然后查看其帶來的影響。 許多習(xí)題都要求你創(chuàng)建自己的可視化結(jié)果。 數(shù)據(jù)經(jīng)驗(yàn) “數(shù)據(jù)科學(xué)本科課程建議”中提出:“數(shù)據(jù)經(jīng)驗(yàn)需要在所有課程中扮演核心角色!11 在本書的案例研究、習(xí)題和項(xiàng)目中,你將使用許多真實(shí)世界數(shù)據(jù)集和數(shù)據(jù)源。網(wǎng)上有各種免費(fèi)的開源數(shù)據(jù)集供你實(shí)驗(yàn)。有些我們參考的網(wǎng)站列出很多數(shù)據(jù)集,我們鼓勵(lì)你探索這些數(shù)據(jù)集。 我們收集了上百份教學(xué)大綱,追蹤了教師的數(shù)據(jù)集偏好,并研究了最流行的監(jiān)督機(jī)器學(xué)習(xí)、無監(jiān)督機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的數(shù)據(jù)集。你將會(huì)使用到的許多庫(kù)都附帶用于實(shí)驗(yàn)的標(biāo)準(zhǔn)數(shù)據(jù)集。 你將學(xué)習(xí)如何進(jìn)行數(shù)據(jù)獲取和分析準(zhǔn)備,學(xué)習(xí)使用多種技術(shù)進(jìn)行數(shù)據(jù)分析、模型調(diào)整并有效交流結(jié)果,特別是通過可視化。 像開發(fā)者一樣思考 你將以開發(fā)者為視角,使用像GitHub和StackOverflow一樣的流行網(wǎng)站并且進(jìn)行大量互聯(lián)網(wǎng)搜索!皵(shù)據(jù)科學(xué)入門”部分和第12~17章中的案例研究提供了豐富的數(shù)據(jù)經(jīng)驗(yàn)。 GitHub為尋找開源代碼提供了一個(gè)優(yōu)秀的場(chǎng)所,你可以把代碼合并到自己的項(xiàng)目中(并將你的代碼貢獻(xiàn)到開源社區(qū)中)。它是軟件開發(fā)者版本控制工具庫(kù)中的重要組成部分,這些工具幫助開發(fā)團(tuán)隊(duì)管理他們的開源(和私有)項(xiàng)目。 我們鼓勵(lì)你學(xué)習(xí)GitHub等網(wǎng)站上發(fā)布的代碼。 在為計(jì)算機(jī)科學(xué)和數(shù)據(jù)科學(xué)的職業(yè)生涯做準(zhǔn)備的過程中,你將大量使用免費(fèi)且開源的Python和數(shù)據(jù)科學(xué)庫(kù),來自政府、工業(yè)界和學(xué)術(shù)界的真實(shí)世界數(shù)據(jù)集,以及免費(fèi)、免費(fèi)試用或免費(fèi)增值的軟件和云服務(wù)。 動(dòng)手實(shí)踐云計(jì)算 很多大數(shù)據(jù)分析發(fā)生在云端。在云端動(dòng)態(tài)地度量你的應(yīng)用程序需要的硬件和軟件規(guī)模是比較容易的。你將會(huì)使用各種各樣的云服務(wù)(某些是直接的,某些是間接的),包括Twitter、Google翻譯、IBM Watson、Microsoft Azure、OpenMapQuest、geopy、Dweet.io 和 PubNub。你將在習(xí)題和項(xiàng)目中了解更多。 我們鼓勵(lì)你使用各種云服務(wù)供應(yīng)商提供的免費(fèi)、免費(fèi)試用或免費(fèi)增值的服務(wù)。我們更喜歡那些不需要信用卡的,因?yàn)檎l都不想冒意外地積攢巨額賬單的風(fēng)險(xiǎn)。如果你決定使用需要信用卡的服務(wù),確保你使用的免費(fèi)層不會(huì)自動(dòng)跳轉(zhuǎn)到支付層。 數(shù)據(jù)庫(kù)、大數(shù)據(jù)和大數(shù)據(jù)基礎(chǔ)設(shè)施 根據(jù)IBM(2016年11月)的數(shù)據(jù),全球90%的數(shù)據(jù)是在過去的兩年內(nèi)產(chǎn)生的12。有證據(jù)表明,數(shù)據(jù)產(chǎn)生的速度正在加快。 根據(jù)2016年3月Analytics Week的一篇文章,五年內(nèi)將有超過500億臺(tái)設(shè)備連接到互聯(lián)網(wǎng),到2020年前,我們將每秒為地球上的每一個(gè)人產(chǎn)生1.7兆字節(jié)的新數(shù)據(jù)13! 本書包含了對(duì)關(guān)系數(shù)據(jù)庫(kù)和帶有SQLite的SQL的探討,感興趣的讀者可以選擇閱讀。 數(shù)據(jù)庫(kù)是存儲(chǔ)和操作你要處理的大量數(shù)據(jù)的關(guān)鍵性大數(shù)據(jù)基礎(chǔ)設(shè)施。關(guān)系數(shù)據(jù)庫(kù)處理結(jié)構(gòu)化數(shù)據(jù),它們不適用于大數(shù)據(jù)應(yīng)用程序中的非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)。因此,隨著大數(shù)據(jù)的發(fā)展,為了有效處理這些數(shù)據(jù),NoSQL和NewSQL數(shù)據(jù)庫(kù)應(yīng)運(yùn)而生。本書包含對(duì)NoSQL和NewSQL的概述,以及利用MongoDB JSON文件數(shù)據(jù)庫(kù)的動(dòng)手實(shí)踐的案例研究。 第17章包含關(guān)于大數(shù)據(jù)硬件與軟件基礎(chǔ)設(shè)施的細(xì)致討論。 人工智能案例研究 為什么這本書沒有關(guān)于人工智能的章節(jié)呢?畢竟,“AI”是印在封面上的。在第12~16章的案例研究中,我們介紹的人工智能主題(計(jì)算機(jī)科學(xué)與數(shù)據(jù)科學(xué)的一個(gè)關(guān)鍵交集)包含自然語(yǔ)言處理、利用數(shù)據(jù)挖掘?qū)witter進(jìn)行情感分析、利用IBM Watson進(jìn)行認(rèn)知計(jì)算、監(jiān)督機(jī)器學(xué)習(xí)、無監(jiān)督機(jī)器學(xué)習(xí)、深度學(xué)習(xí)和強(qiáng)化學(xué)習(xí)(在習(xí)題中)。第17章介紹了大數(shù)據(jù)硬件和軟件基礎(chǔ)設(shè)施,這些基礎(chǔ)設(shè)施支撐了計(jì)算機(jī)科學(xué)家和數(shù)據(jù)科學(xué)家研究的前沿AI解決方案。 計(jì)算機(jī)科學(xué) 第1~10章的Python基礎(chǔ)知識(shí)會(huì)讓你像計(jì)算機(jī)科學(xué)家一樣思考。第11章提供了一個(gè)更高的視角,其中討論的都是經(jīng)典的計(jì)算機(jī)科學(xué)話題。第11章強(qiáng)調(diào)性能問題。 內(nèi)置集合:列表、元組、集合、字典 今天,大多數(shù)應(yīng)用開發(fā)人員不再構(gòu)建定制的數(shù)據(jù)結(jié)構(gòu)。這是CS2課程的主題—嚴(yán)格來說,我們的范圍是CS1和相應(yīng)的數(shù)據(jù)科學(xué)課程。書中用兩章的篇幅詳細(xì)介紹了Python的內(nèi)置數(shù)據(jù)結(jié)構(gòu)—列表、元組、字典和集合,大多數(shù)數(shù)據(jù)結(jié)構(gòu)任務(wù)都可以通過這些數(shù)據(jù)結(jié)構(gòu)來完成。 使用NumPy數(shù)組、pandas Series和DataFrame進(jìn)行面向數(shù)組的編程 在這本書中我們專注于開源庫(kù)中的三個(gè)關(guān)鍵數(shù)據(jù)結(jié)構(gòu)—NumPy數(shù)組、pandas Series和pandas DataFrame。這些庫(kù)被廣泛用于數(shù)據(jù)科學(xué)、計(jì)算機(jī)科學(xué)、人工智能和大數(shù)據(jù)。NumPy的性能比內(nèi)置Python列表高出兩個(gè)數(shù)量級(jí)。 第7章中詳細(xì)介紹了NumPy數(shù)組。pandas等許多庫(kù)都是在NumPy的基礎(chǔ)上構(gòu)建的。第7~9章的“數(shù)據(jù)科學(xué)入門”部分介紹了pandas Series和DataFrame,這兩個(gè)庫(kù)以及NumPy數(shù)組將在剩余的章節(jié)中頻繁使用。 文件處理和序列化 第9章介紹文本文件處理,然后演示了如何使用流行的JSON(JavaScript對(duì)象表示法)格式把對(duì)象序列化。JSON是一個(gè)普遍使用的數(shù)據(jù)交換格式,在后面的數(shù)據(jù)科學(xué)章節(jié)中你會(huì)經(jīng)常見到它—通常為簡(jiǎn)單起見把JSON的細(xì)節(jié)隱藏在庫(kù)中。 基于對(duì)象編程 在我們?yōu)楸緯M(jìn)行調(diào)研期間研究的所有Python代碼中,很少遇到自定義類,而這在Python開發(fā)者使用的強(qiáng)大的庫(kù)中是很常見的。 我們強(qiáng)調(diào)大量使用Python開源社區(qū)打包到工業(yè)標(biāo)準(zhǔn)類庫(kù)中的類。你將專注于:了解有哪些庫(kù),選擇你的應(yīng)用程序需要的庫(kù),從現(xiàn)有類(通常是一行或兩行代碼)創(chuàng)建對(duì)象以及讓它們“跳起來、舞起來、唱起來”。這叫作基于對(duì)象編程—它使你能夠簡(jiǎn)潔地構(gòu)建令人印象深刻的應(yīng)用程序,這是體現(xiàn)Python吸引力的重要組成部分。 通過這種方法,你可以使用機(jī)器學(xué)習(xí)、深度學(xué)習(xí)、強(qiáng)化學(xué)習(xí)(在習(xí)題中)和其他AI技術(shù)來解決各種各樣有趣的問題,包括語(yǔ)音識(shí)別和計(jì)算機(jī)視覺等認(rèn)知計(jì)算方面的挑戰(zhàn)。過去,如果僅僅學(xué)過入門級(jí)編程課程,是不可能完成這些任務(wù)的。 面向?qū)ο缶幊?/p> 對(duì)計(jì)算機(jī)科學(xué)專業(yè)的學(xué)生來說,開發(fā)自定義類是一個(gè)至關(guān)重要的面向?qū)ο缶幊碳寄,相關(guān)的繼承、多態(tài)和鴨子類型也同樣重要。我們將在第10章中討論這些內(nèi)容。 面向?qū)ο缶幊痰挠懻撌悄K化的,所以教師可以分開介紹基礎(chǔ)或中級(jí)部分。 ………… 保羅·戴特爾(Paul Deitel) Deitel&Associates公司首席執(zhí)行官兼首席技術(shù)官,畢業(yè)于麻省理工學(xué)院,在計(jì)算機(jī)領(lǐng)域擁有38年的經(jīng)驗(yàn)。他自1992年以來就為軟件開發(fā)人員教授專業(yè)課程,為包括思科、IBM、西門子、戴爾、NASA、北電網(wǎng)絡(luò)在內(nèi)的全球企業(yè)客戶提供了數(shù)百門編程課程。 目 錄 第1章 計(jì)算機(jī)和Python簡(jiǎn)介 1 1.1 引言 2 1.2 硬件和軟件 3 1.3 數(shù)據(jù)層級(jí) 6 1.4 機(jī)器語(yǔ)言、匯編語(yǔ)言和高級(jí)語(yǔ)言 9 1.5 對(duì)象技術(shù)簡(jiǎn)介 10 1.6 操作系統(tǒng) 13 1.7 Python簡(jiǎn)介 16 1.8。ㄕZ(yǔ)言)庫(kù) 18 1.9 其他常見編程語(yǔ)言 20 1.10 試用:使用IPython和Jupyter Notebook 21 1.11 Internet和WWW 29 1.12 軟件技術(shù) 32 1.13 大數(shù)據(jù) 33 1.14 數(shù)據(jù)科學(xué)入門:大數(shù)據(jù)移動(dòng)應(yīng)用案例研究 40 第2章 Python程序設(shè)計(jì)簡(jiǎn)介 49 2.1 引言 50 2.2 變量和賦值語(yǔ)句 50 2.3 算術(shù)操作 52 2.4 print函數(shù)、單引號(hào)字符串和雙引號(hào)字符串 56 2.5 三引號(hào)字符串 58 2.6 從用戶處獲得輸入 59 2.7 判斷:if語(yǔ)句與比較操作 61 2.8 對(duì)象和動(dòng)態(tài)類型 66 2.9 數(shù)據(jù)科學(xué)入門:基本統(tǒng)計(jì)功能 68 2.10 小結(jié) 70 第3章 控制語(yǔ)句和程序設(shè)計(jì) 73 3.1 引言 74 3.2 算法 74 3.3 偽代碼 75 3.4 控制語(yǔ)句 75 3.5 if語(yǔ)句 78 3.6 if...else和if...elif...else語(yǔ)句 80 3.7 while語(yǔ)句 85 3.8 for語(yǔ)句 86 3.9 增量賦值 89 3.10 程序設(shè)計(jì):通過序列控制重復(fù) 90 3.11 程序設(shè)計(jì):通過哨兵控制重復(fù) 93 3.12 程序設(shè)計(jì):嵌套控制結(jié)構(gòu) 97 3.13 內(nèi)置函數(shù)range:進(jìn)一步討論 101 3.14 使用Decimal類型表達(dá)貨幣總量 102 3.15 break和continue語(yǔ)句 105 3.16 布爾操作and、or和not 106 3.17 數(shù)據(jù)科學(xué)入門:趨勢(shì)的度量—均值、中值、眾數(shù) 109 3.18 小結(jié) 111 第4章 函數(shù) 119 4.1 引言 120 4.2 函數(shù)的定義 120 4.3 多參數(shù)函數(shù) 123 4.4 隨機(jī)數(shù)生成器 125 4.5 案例研究:機(jī)會(huì)游戲 128 4.6 Python標(biāo)準(zhǔn)庫(kù) 131 4.7 math模塊函數(shù) 132 4.8 使用IPython的tab補(bǔ)全功能 133 4.9 缺省形參值 135 4.10 關(guān)鍵字實(shí)參 136 4.11 任意實(shí)參表 136 4.12 方法:歸屬于對(duì)象的函數(shù) 138 4.13 作用域規(guī)則 138 4.14 import:進(jìn)一步討論 140 4.15 給函數(shù)傳遞實(shí)參:進(jìn)一步討論 142 4.16 函數(shù)調(diào)用棧 145 4.17 函數(shù)式程序設(shè)計(jì) 146 4.18 數(shù)據(jù)科學(xué)入門:數(shù)據(jù)分布的度量 148 4.19 小結(jié) 150 第5章 序列:列表和元組 155 5.1 引言 156 5.2 列表 156 5.3 元組 161 5.4 序列拆包 163 5.5 序列切片 166 5.6 del語(yǔ)句 169 5.7 給函數(shù)傳遞列表 171 5.8 排序列表 172 5.9 搜索序列 174 5.10 其他列表方法 176 5.11 用列表模擬棧 178 5.12 列表解析 179 5.13 生成器表達(dá)式 181 5.14 過濾器、映射和約簡(jiǎn) 182 5.15 其他序列處理函數(shù) 185 5.16 二維列表 187 5.17 數(shù)據(jù)科學(xué)入門:模擬和靜態(tài)可視化 191 5.18 小結(jié) 199 第6章 字典和集合 209 6.1 引言 210 6.2 字典 210 6.3 集合 221 6.4 數(shù)據(jù)科學(xué)入門:動(dòng)態(tài)可視化 228 6.5 小結(jié) 234 第7章 使用NumPy進(jìn)行面向數(shù)組的編程 239 7.1 引言 240 7.2 從已有數(shù)據(jù)中創(chuàng)建數(shù)組 241 7.3 數(shù)組屬性 242 7.4 用特定值填充數(shù)組 244 7.5 使用range創(chuàng)建數(shù)組 244 7.6 列表與數(shù)組的性能比較:%timeit簡(jiǎn)介 246 7.7 數(shù)組操作 248 7.8 NumPy計(jì)算方法 250 7.9 全局函數(shù) 252 7.10 索引和切片 254 7.11 視圖:淺拷貝 256 7.12 深拷貝 258 7.13 轉(zhuǎn)換和轉(zhuǎn)置 259 7.14 數(shù)據(jù)科學(xué)入門:pandas Series和DataFrame 262 7.15 小結(jié) 275 第8章 字符串:進(jìn)一步討論 283 8.1 引言 284 8.2 格式化字符串 285 8.3 字符串拼接和重復(fù) 289 8.4 字符串空白符剝離 290 8.5 改變字符的大小寫 291 8.6 字符串比較操作 292 8.7 子串搜索 292 8.8 子串替換 294 8.9 字符串切分和合并 294 8.10 字符和字符測(cè)試方法 297 8.11 原生字符串 298 8.12 正則表達(dá)式簡(jiǎn)介 299 8.13 數(shù)據(jù)科學(xué)入門:pandas、正則表達(dá)式和數(shù)據(jù)治理 307 8.14 小結(jié) 312 第9章 文件和異常 319 9.1 引言 320 9.2 文件 321 9.3 文本文件處理 321 9.4 更新文本文件 325 9.5 JSON序列化 327 9.6 安全問題:pickle序列化和反序列化 330 9.7 關(guān)于文件的其他說明 330 9.8 異常處理 331 9.9 finally子句 336 9.10 顯式引發(fā)異常 339 9.11。ǹ蛇x)棧展開和回溯 339 9.12 數(shù)據(jù)科學(xué)入門:CSV文件的處理 342 9.13 小結(jié) 349 第10章 面向?qū)ο蟪绦蛟O(shè)計(jì) 355 10.1 引言 356 10.2 定制類Account 358 10.3 屬性的受控訪問 363 10.4 數(shù)據(jù)訪問的特性 364 10.5 私有屬性模擬 371 10.6 案例研究:洗牌和切牌 373 10.7 繼承:基類和子類 382 10.8 構(gòu)建繼承層次和多態(tài)簡(jiǎn)介 384 10.9 鴨子類型和多態(tài) 392 10.10 操作符重載 393 10.11 異常類層次和定制異常處理 397 10.12 有名元組 399 10.13 Python 3.7新數(shù)據(jù)類簡(jiǎn)介 400 10.14 使用文檔字符串和doctest進(jìn)行單元測(cè)試 406 10.15 命名空間和作用域 411 10.16 數(shù)據(jù)科學(xué)入門:時(shí)間序列和簡(jiǎn)單線性回歸 414 10.17 小結(jié) 423 第11章 計(jì)算機(jī)科學(xué)思維:遞歸、搜索、排序和大O表示法 431 第12章 自然語(yǔ)言處理 477 第13章 Twitter數(shù)據(jù)挖掘 515 第14章 IBM Watson和認(rèn)知計(jì)算 565 第15章 機(jī)器學(xué)習(xí):分類、回歸和聚類 593 第16章 深度學(xué)習(xí) 665 第17章 大數(shù)據(jù):Hadoop、Spark、NoSQL和IoT 723
你還可能感興趣
我要評(píng)論
|