數據分析實戰

數據分析實戰
定價:474
NT $ 412
 

內容簡介

本書分為三大部分。第一部分會講授一些實戰技巧,用於讀取、寫入、清洗、格式化、探索與理解資料;第二部分由一些較深入的主題組成,比如分類、聚類和預測等;第三部分介紹更高深的主題,從圖論到自然語言處理,到離散選擇模型,再到類比。
 

作者介紹

托馬茲·卓巴斯(Tomasz Drabas)微軟資料科學家,致力於解決高維特徵空間的問題。他有超過13年的資料分析和資料科學經驗:在歐洲、澳大利亞和北美洲三大洲期間,工作領域遍及高新技術、航空、電信、金融和諮詢。他曾擔任Beyond Analysis Australia的資料分析師和Vodafone Hutchison Australia的高級資料分析師/資料科學家等。
 
 

目錄

推薦序
譯者序
前言
致謝
關於作者
關於審稿人

第1章 準備數據1
1.1 導論1
1.2 使用Python讀寫CSV/TSV檔2
1.3 使用Python讀寫JSON檔6
1.4 使用Python讀寫Excel檔7
1.5 使用Python讀寫XML檔10
1.6 使用pandas檢索HTML頁面13
1.7 存儲並檢索關聯式資料庫15
1.8 存儲並檢索MongoDB18
1.9 使用OpenRefine打開並轉換資料20
1.10 使用OpenRefine探索資料23
1.11 排重25
1.12 使用規則運算式與GREL清理資料27
1.13 插補缺失值28
1.14 將特徵規範化、標準化29
1.15 分級數據30
1.16 編碼分類變數32

第2章 探索資料34
2.1 導論34
2.2 生成描述性的統計資料34
2.3 探索特徵之間的相關性37
2.4 視覺化特徵之間的相互作用38
2.5 生成長條圖43
2.6 創建多變數的圖表46
2.7 數據取樣49
2.8 將資料集拆分成訓練集、交叉驗證集和測試集51

第3章 分類技巧53
3.1 導論53
3.2 測試並比較模型53
3.3 樸素貝葉斯分類器56
3.4 將邏輯回歸作為通用分類器使用58
3.5 將支援向量機用作分類引擎61
3.6 使用決策樹進行分類65
3.7 使用隨機森林預測訂閱者69
3.8 使用神經網路對呼叫進行分類72

第4章 聚類技巧79
4.1 導論79
4.2 評估聚類方法的表現79
4.3 用k均值演算法聚類資料82
4.4 為k均值演算法找到最優的聚類數84
4.5 使用mean shift聚類模型發現聚類90
4.6 使用c均值構建模糊聚類模型91
4.7 使用層次模型聚類資料93
4.8 使用DBSCAN和BIRCH演算法發現潛在的訂閱者96

第5章 降維99
5.1 導論99
5.2 創建三維散點圖,顯示主成分99
5.3 使用核PCA降維102
5.4 用主成分分析找到關鍵因素105
5.5 使用隨機PCA在資料中尋找主成分109
5.6 使用線性判別分析提取有用的維度114
5.7 用kNN分類模型給電話分類時使用多種降維技巧117

第6章 回歸模型122
6.1 導論122
6.2 識別並解決資料中的多重共線性124
6.3 構建線性回歸模型128
6.4 使用OLS預測生產的電量134
6.5 使用CART估算發電廠生產的電量138
6.6 將kNN模型用於回歸問題141
6.7 將隨機森林模型用於回歸分析143
6.8 使用SVM預測發電廠生產的電量145
6.9 訓練神經網路,預測發電廠生產的電量151
第7章 時間序列技術154
7.1 導論154
7.2 在Python中如何處理日期物件155
7.3 理解時間序列資料159
7.4 平滑並轉換觀測值163
7.5 過濾時間序列資料166
7.6 移除趨勢和季節性169
7.7 使用ARMA和ARIMA模型預測未來173

第8章 圖181
8.1 導論181
8.2 使用NetworkX在Python中處理圖物件182
8.3 使用Gephi將圖視覺化190
8.4 識別信用卡資訊被盜的使用者200
8.5 識別誰盜竊了信用卡204

第9章 自然語言處理207
9.1 導論207
9.2 從網路讀入原始文本208
9.3 標記化和標準化212
9.4 識別詞類,處理n-gram,識別命名實體218
9.5 識別文章主題224
9.6 識別句子結構226
9.7 根據評論給影片歸類229

第10章 離散選擇模型233
10.1 導論233
10.2 準備資料集以估算離散選擇模型235
10.3 估算知名的多項Logit模型239
10.4 測試來自無關選項的獨立性衝突244
10.5 用巢式Logit模型處理IIA衝突249
10.6 用混合Logit模型處理複雜的替代模式251

第11章 模擬254
11.1 導論254
11.2 使用SimPy模擬加油站的加油過程255
11.3 模擬電動車耗盡電量的場景264
11.4 判斷羊群面對群狼時是否有團滅的風險269
 
 

Foreword 推 薦 序程式師、科學家、工程師之間有什麼差別?這個問題,我問過許多“軟體工程師”,大家似乎都沒法說得特別清楚,常見的答案是從名字上來區分:程式師只關心 代碼,工程師負責的是系統,科學家的理論知識非常深厚。它的潛臺詞是:你看,我是個工程師,我不只關心代碼,我還為系統負責,但是,你沒法對我的理論知識 做太多要求。
看來,實際情況也確實如此。前些年,我在一支頗有效率的開發團隊裡,組織大家“補習”資料結構和演算法。我驚奇地發現,不少主力開發人員做起業務功能來異常 拿手,毫不畏懼,但面對簡單的“理論問題”—比如如何從一個陣列中找到和最大的兩個元素—竟然束手無策。而且很多人都認為,這不是問題。
我想,這就是很大的問題。
“工程”這回事,是什麼時候出現,並讓大家意識到它不等於“手藝”的呢?具體時間或者不可考,但有個故事很能說明問題。
1742年,教皇本尼迪克特十四世(Benedict XIV)需要派人診斷羅馬聖彼得大教堂拱頂出現的裂紋。傳統上,這種事情總是要找建造經驗最豐富的工匠。但是這次不一樣,教皇把任務指派給了三位數學家, 其中一位還曾編輯和注釋過以撒·牛頓的《自然哲學的數學原理》。在那個年代,他們的診斷方法和結論都引發了巨大的爭議,因為其違背了無數工匠的經驗和直 覺。按照三位數學家的結論,拱頂的箍環承受不了水準的推力,必須新增三個帶鏈條和鐵釘的鐵環,才能確保建築的完整。
他們的建議被採納了。今天,如果你去羅馬,仍然可以看到完整的聖彼得大教堂。
土木工程師兼歷史學家斯特勞布評論說:這份報告在土木工程史上有劃時代的意義……重要性在於,與所有的傳統和常規相反,對建築結構的穩定性的勘測,不是建立在經驗規則和靜態感覺的基礎之上,而是建立在科學的分析和研究之上。
從此大家逐漸相信,建築不再是一門“手藝”,要想建造更複雜、更偉大的建築,科學和研究是無論如何離不開的。今天,如果土木工程師在工作時不依照模型、理論、計算,而是完全按照經驗和直覺,哪怕他的經驗再豐富,也不能稱為“工程師”。
在我看來,軟體發展,在某種程度上也處於相同的時間點。我承認,之前的大量開發工作,不需要太多理論和科學知識,單純憑經驗和直覺就可以完成。但是如今, 我們已經無可避免地被捲入大資料的洪流之中—哪怕是“傳統”的互聯網開發,也已經大不相同了。我們寫的每一個功能,都可能被成千上萬人,在成千上萬的場景 下,成千上萬次地使用。在整個過程中,成千上萬的埋點、成千上萬的感測器,會留下巨細靡遺的資料。如何還原場景、找到問題、做出改進,答案往往就藏在這些 資料當中,誰看得懂、玩得轉這些資料,誰就能找到答案。
拿簡單的“上課前給用戶打電話通知”來說,它絕不再是“調用供應商介面發一個語音”那麼簡單。提前多久給用戶打電話回饋好?什麼樣的語音資訊最容易接受? 各地用戶有什麼特別偏好?不同年齡段的用戶接受程度如何?……如果我們承認“用戶體驗”重要,那麼搞清楚這些問題便也很重要。公司搞不清楚,就會被用戶嫌 棄。工程師搞不清楚,就只能被動接受產品經理的指揮。而這些問題的答案,只能來自對資料的積累和分析。
不要妄想“資料科學家”能幫忙解決這些問題,“資料科學家”太寶貴了,只能用在業務價值最關鍵的場合。更多的場合,工程師只能挽起袖子自己上場。然而,大 部分工程師目前的資料處理能力還局限於極值、算數平均、方差等等少數幾項。許多工程師也承認,資料分析能力很重要,也希望學習,可是打開資料分析的專門教 材,一看到密集的公式,就已經打了退堂鼓。
怎麼辦?我認為,閱讀《資料分析實戰》是個不錯的出路。之所以這麼說,有四個原因:第一,這本書的風格是“代碼先行”,而且是可以運行的Python代碼 先行,對於要用到的各種工具包、類庫的安裝,都有詳細的說明,這種風格對於工程師來說,天然有親切感;第二,例子都是非常實際的,無論是銀行電話行銷資料 分析,還是電網的發電量分析,以及影評文本分析,都很容易和生活經驗結合起來,容易理解;第三,非常注重出圖,全書用了相當多的篇幅講述畫圖,而且是用 JavaScript直接出圖,圖形非常有助於建立直觀的認識,JavaScript畫圖幾乎可以保證“人人都可以完成”;第四,譯者是工程師出身,在數 據分析這個行業有足夠豐富的經驗,同時也足夠謙虛,對於譯文的品質來說,這都是很好的保證。
實際上在我看來,普通的技術人員,無論之前做的是什麼工作,只要不是極端排斥資料分析,那麼閱讀這本書,都可以建立對資料分析的準確認知,並且還能真刀真 槍地玩上幾下:看,資料分析就是這樣。一旦掌握了基礎的知識和技能,無論把它們當作繼續深入學習的基礎,還是直接應用到現有工作當中去,都會有巨大的收 獲。
不要在1742年以後再當一個不懂數學的建築工匠,不要在大資料時代當一個完全不懂資料分析的工程師。如果認同這個判斷,歡迎你把本書當成高性價比的選擇。
餘 晟The Translator s Words 譯 者 序作為譯者,我其實不太敢說些什麼。一是譯者的話當然不如作者的話重要。作者尚未開口,譯者先在讀者面前高談闊論,怕是難免佛頭著糞引人譏笑。二是譯者的 話也可能會給讀者帶來一些令人啼笑皆非的影響。我還記得大二那年,因為愷蒂作了序,我在圖書館仔細閱讀了“譯林少兒文庫”中的一本書—從序言開始仔細閱 讀。讀完序言就已經瞭解了大致情節。等到最後二十頁,作者要給我帶來震撼時,我只好假裝不知道真相,配合性地震撼了一下。這本書就是《少年Pi的奇幻漂 流》。
但是,幸好擺在你面前的是一本技術書。而且是工具性質的技術書。這就好辦了。不用擔心譯序的罅隙洩露了情節。而我畢竟譯完了全書,對本書內容算是比較熟悉,也有義務介紹一下這本書,希望對你的使用有些助益。
本書大體上分三部分。第一部分是資料的基本處理,這部分內容讀者可能最熟悉,用到的頻率可能也最高;第二部分可以看成大學裡人工智慧概論課的補充材料,包括分類、聚類、降維、時間序列等主題;第三部分就是一些更深入的課題了,比如自然語言處理。
作為工具類技術書,本書講的都是具體的實戰技巧,非常實用。讀者可以根據實際需要,挑選特定的主題閱讀。不過我還是建議大家完整地讀一遍。作者很貼心,大部分知識點都給出了可以深入瞭解的參考資料。不妨通過閱讀本書,拓寬一下技術視野。
最近兩年,DeepMind公司不停地刷頭條。2016年年初AlphaGo戰勝了李世石,之後又有Master締造了連勝神跡,AlphaGo Zero戰勝了Master。近期推出的AlphaZero,經過很短時間的訓練,就超越了最強的國際象棋軟體、最強的將棋軟體,以及最強的圍棋軟體—之 前的AlphaGo Zero。圍棋界和技術界都在向阿老師及其締造者學習。AI與資料科學也變得更加廣為人知。畢竟我們不僅要靠個人奮鬥,還要考慮歷史進程。
不過不管行業風口如何變幻,希望我們都能立足技術,從實際業務出發,潛心學習。老子說千里之行始於足下,莊子也講庖丁解牛丈人承蜩。我們不是一個簡簡單單寫代碼的人,我們是程式師,是要做資料科學家的。與大家共勉。
本書得以出版,首先要感謝機械工業出版社的王春華老師與張志銘老師,是他們的建議使我開始本書的翻譯,也感謝他們在翻譯過程中對我的信任、寬容與幫助;感 謝姜承堯老師、余晟老師在技術和專業翻譯方面給我的指導,讓我獲益良多;感謝陳文備、楊天宇、束文奐、康墨、胡林軍和劉禎,他們參與了全書譯稿的審校;還 要感謝我的好妻子翁聯吉,感謝她對我的理解與支持。
如果你對本書內容有任何疑問,歡迎與我聯繫。電子郵寄地址:[email protected]。GitHub帳號:diaosj。祝各位閱讀愉快。
刁壽鈞
網路書店 類別 折扣 價格
  1. 新書
    87
    $412