◎ 從系統角度出發
◎ 理論與實務結合
◎ 主次分明通俗易懂
本書特色
巨量資料-->演算法-->機器學習-->預測未來,這是現在雲端時代最重要範式,也是人類進入數位時代後最重要的一次工業革命,集未來科技之大成,智慧家居、無人車、帶我們上火星,靠著就是這些暗黑科學。
本書內容
人工智慧和巨量資料技術已成為IT企業的發展趨勢,而技術的高速發展和需求的不斷增加也產生極大的人才缺口。
本書致力於有系統地闡釋Python大數據和機器學習技術,從資料的擷取、儲存、清洗,到建立模型、統計分析,最後用前端程式呈現給使用者資料展示以及後台的系統服務支援。本書結合Python資料工具使用、演算法原理以及典型實例各個層面,希望讀者透過閱讀本書,少走冤枉路,以最小的學習成本獲得最大的知識收益。
程式設計師透過閱讀本書可以學習大數據和機器學習企業的實際技能和方法;創業者和產品設計人員透過閱讀本書可以了解資料建模的功能、相關的技術點,以便更進一步地設計產品。
全書共16 章,第1 章 Python 程式設計介紹作為巨量資料工程師需要掌握的基本技術。
第2 ∼ 4 章 Python 資料分析工具 詳細介紹資料處理使用的科學計算函數庫Numpy、資料操作函數庫Pandas、資料視覺化工具Matplotlib 和Seaborn,以及互動作圖工具PyEcharts的資料處理邏輯和常用方法範例。
第5 ∼ 10 章 Python 資料處理與機器學習演算法 將理論、實例和Python 程式結合在一起,分別說明資料處理的每一個子模組。
第11 ∼ 16 章 Python 實戰 介紹決策問題、遷移學習、影像分割、時序分析、自然語言處理、定義問題的方法等幾種典型的機器學習問題,兼顧使用場景分析、原理、程式解析等層面,和讀者一起探討在實戰中解決問題的想法和方法。
適合讀者群
學習Python演算法和資料分析的工程師、往人工智慧和巨量資料方向發展的工程師、對人工智慧和巨量資料開發有興趣者。
作者簡介:
謝彥
多年軟體開發和演算法研發經驗,曾任職聯想研究院、元心科技等公司。參與研發機上盒、智慧手機作業系統,工作涉及上層應用、集群構建、圖形底層優化、語音合成與識別、資料採擷、深度學習演算法等。
目前專注於醫療大數據應用研發。
作者序
前言
為什麼要寫這本書?
隨著5G 時代的來臨、企業資訊化系統的不斷增強以及物聯網的興起,資料的收集、傳輸、儲存不再是問題,資料的品質和數量都呈爆發式增長。巨量資料開發的焦點逐漸從資料收集統計向採擷新功能、節省成本、創造價值的方向轉變,進一步催生出大量的應用,並且開始在各個垂直領域開花結果。
人工智慧和巨量資料技術是一種互相的學科,不僅需要電腦領域的知識和演算法技術,而且還需要應用領域的相關知識和技巧才能定義和解決問題。可以說,巨量資料不僅是一種技術,而且是一種思維。機器從資料中學習知識、總結經驗,並不斷自我進化,整個企業將迎來從資訊化向智慧化蓬勃發展的時期。
從業者也將面臨前所未有的挑戰:如何定義問題、選擇資料、架構系統、評估工作量、完成工作需要哪些技能⋯⋯這些問題也隨著企業的變化而逐步演進。對於從業者的技術要求越來越高,同時也產生了極大的人才缺口。
在此時代背景下,大量學生和有經驗的程式設計師都希望能向人工智慧和巨量資料的方向發展,而該領域又涉及系統整合、資料倉儲、網路資料取得、統計學、數學基礎、機器學習建模以及結果的展示等方面,使得該企業「門檻」比較高。對於日新月異的新興企業,技術更新反覆運算速度非常快,目前學校和教育訓練機構開設的課程有限,且水平良莠不齊。在校招時,筆者就發現大學生常常很難達到演算法工程師的要求。
那麼,如何培養資料工程師並使其在有限的時間內了解整個系統的執行方式,同時出色地完成本身的工作,對學校和企業來說都是必須面對的問題。
目前,市場上的巨量資料書籍和教學基本分為兩種:一種偏重演算法概念,實用性較差,讀者的學習過程比較艱難枯燥,學習之後也很難與實際工作相結合;另一種偏重說明語言和工具的用法,實例相對簡單,與真實應用場景差別較大。
在本書的撰寫過程中,筆者遵循全面、實戰、目標導向的原則,以在實際工作中巨量資料工程師需要掌握的技術為目標,系統地說明了資料工程師的必備技能;由程式設計師轉行的資料工程師也可以從這本書中學習演算法和統計學原理,在使用工具時不僅可以知其然,還可以知其所以然。在結構上,本書並沒有為保持完整性而用相同篇幅說明所有功能,而是根據實作經驗整理出常用的問題和場景,讓讀者用最短的時間,掌握最核心的知識,避免陷入細枝末節中。
本書有何特色?
1. 從系統角度出發
本書有關巨量資料工程的各方面,從問題的定義、資料評估,到實作方式,如數據取得(爬蟲)、資料儲存(資料庫、資料倉儲)、特徵工程、資料展示、統計分析、建立模型以及簡單的前端展示。其中,還有關資料叢集的架設(Linux、Docker)。本書可以讓讀者了解資料工作的全貌,學習整個資料系統的運作和相關技能,具有全域思維,而不只是熟悉小範圍內的實際工作。企業也可以將本書作為從事與巨量資料相關工作人員的教育訓練資料。
2. 理論與實際結合
本書自始至終都本著理論和實際相結合的原則,在原理章節(第7 至10 章)中闡釋原理、推導公式的同時,列出程式並討論該方法常見的使用場景;在實戰章節(第11 至16 章)中除了展示前端演算法的使用方法,還介紹了相關概念、公式推導以及原始程式碼。本書把學和用聯繫起來,既能在學習時了解使用場景,又能在使用時了解其背後的原理和演算法演進過程。
3. 主次分明
本書並不是某一實際領域方法的羅列和知識的歸納,並不為了保持其完整性使用同等篇幅介紹所有功能。本書更多地著眼於基礎知識、常見的需求和方法,儘量將它們組織起來,以解決實際問題的方式偏重關鍵點,簡略說明次要部分。在學習時間和學習難度兩方面降低讀者的學習成本。
4. 前端技術
目前,在很多偏重原理的演算法書中主要說明的都是20 世紀八九十年代流行的演算法,這些基礎演算法都是複雜演算法的基礎,機器學習從業人員必須了解,但在實用方面,它們早已被目前的主流演算法所取代。
本書也使用了一定篇幅說明基礎演算法和統計學方法,同時在實戰章節中引用近幾年的前端技術,如NLP 領域的BERT 演算法、影像分割的Mask R-CNN演算法、機器學習XGBoost 的原理推導以及原始程式的說明。
5. 典型範例
本書後半部分以實例為主,每個實例針對一種典型的問題,包含決策問題、自然語言處理、時間序列、影像處理等,其中大部分程式函數可以直接用在類似的場景中。同時,也在各個章節中加入了範例程式,對於常見問題,讀者可快速找到其解決方法並且直接使用其程式。
6. 通俗容易
本書的語言通俗容易,並在相對生澀的演算法原理章節中加入了大量舉例和相關基礎知識,儘量讓讀者在閱讀過程中無須查閱其他有關基礎知識的書籍,以加強學習效率。
本書內容及知識系統
第1 章 Python 程式設計
本章介紹作為巨量資料工程師需要掌握的基本技術,讓讀者對資料分析的知識系統有一個整體的認知,然後說明各種Python 開發和執行環境的架設,以及Python 的基本資料結構和語法、偵錯技術和常見問題。不熟悉Python 程式設計的開發者可透過學習本章掌握Python 語言的特點和使用方法。
第2 ∼ 4 章 Python 資料分析工具
本部分詳細介紹資料處理使用的科學計算函數庫Numpy、資料操作函數庫
Pandas、資料視覺化工具Matplotlib 和Seaborn,以及互動作圖工具PyEcharts的資料處理邏輯和常用方法範例,為後續的資料處理奠定基礎。
第5 ∼ 10 章 Python 資料處理與機器學習演算法
本部分有關資料獲取、資料儲存、特徵工程、統計分析,建立機器學習模型的基本概念、原理、具體實作方式、統計方法和模型的選擇,以及在實現機器學習演算法過程中常用的工具和技巧。其將理論、舉例和Python 程式有機地結合在一起,分別說明資料處理的每一個子模組。
第11 ∼ 16 章 Python 實戰
本部分介紹決策問題、遷移學習、影像分割、時序分析、自然語言處理,以及定義問題的方法等幾種典型的機器學習問題,兼顧使用場景分析、原理、程式解析等層面,和讀者一起探討在實戰中解決問題的想法和方法。
適合閱讀本書的讀者
■ 向人工智慧和巨量資料方向發展的工程師。
■ 學習 Python 演算法和資料分析的工程師。
■ 希望了解巨量資料工作全流程的企業從業者。
■ 希望將資料演算法應用於傳統企業的從業者(金融、醫療、經濟等)。
■ 有一定的巨量資料理論基礎,但沒有實戰經驗的研究人員。
■ 巨量資料和人工智慧方向的創業者。
■ 巨量資料企業的專案經理、產品經理、客戶經理、產品設計師。
■ 希望了解人工智慧和巨量資料開發的學生、教師、專業教育訓練機構的學員。
閱讀本書的建議
■ 對於沒有 Python 程式設計基礎的讀者,建議從第 1 章開始閱讀並演練每一個實例。
■ 對於有經驗的程式設計師,建議先通讀本書,對巨量資料相關問題建立整體認知。對於實際的語法以及函數庫的使用方法,不用一次掌握,只需要了解其可實現的功能,在遇到問題時能從書中速查即可。
■ 演算法章節難度相對較大,但原理非常重要,放平心態認真閱讀,絕大部分都能掌握,有些公式推導未必能一次了解,讀不懂的部分可先保留。
■ 本書後半部分的實例章節,強烈建議讀者在閱讀的過程中程式設計實現和偵錯,並加入自己的改進方案,因為偵錯程式的效果要遠遠大於僅閱讀程式的效果。
前言
為什麼要寫這本書?
隨著5G 時代的來臨、企業資訊化系統的不斷增強以及物聯網的興起,資料的收集、傳輸、儲存不再是問題,資料的品質和數量都呈爆發式增長。巨量資料開發的焦點逐漸從資料收集統計向採擷新功能、節省成本、創造價值的方向轉變,進一步催生出大量的應用,並且開始在各個垂直領域開花結果。
人工智慧和巨量資料技術是一種互相的學科,不僅需要電腦領域的知識和演算法技術,而且還需要應用領域的相關知識和技巧才能定義和解決問題。可以說,巨量資料不僅是一種技術,而且是一種思維。機器從資料中學習知識、總結經...
目錄
前言
01 Python 巨量資料開發入門
1.1 巨量資料工程師必備技能
1.2 Python 開發環境
1.3 Python 開發工具
1.4 Python 資料類型
1.5 Python 函數和類別
1.6 Python 常用函數庫
1.7 Python 技巧
1.8 Python 常見問題
02 科學計算Numpy
2.1 多維陣列
2.2 陣列元素運算
2.3 常用函數
03 資料操作Pandas
3.1 資料物件
3.2 資料存取
3.3 分組運算
3.4 日期時間處理
04 資料視覺化
4.1 Matplotlib 繪圖函數庫
4.2 Seaborn 進階資料視覺化
4.3 PyEcharts 互動圖
05 獲取資料
5.1 讀寫檔案
5.2 讀寫資料庫
5.3 讀寫資料倉儲
5.4 取得網路資料
5.5 選擇資料儲存方式
06 資料前置處理
6.1 資料類型識別與轉換
6.2 資料清洗
6.3 資料精簡
6.4 資料抽樣
6.5 資料組合
6.6 特徵分析
07 資料分析
7.1 入門實例
7.2 假設檢驗
7.3 參數檢驗與非參數檢驗
7.4 T 檢驗
7.5 方差分析
7.6 秩和檢驗
7.7 卡方檢定
7.8 相關性分析
7.9 變數分析
7.10 TableOne 工具
7.11 統計方法歸納
08 機器學習基礎知識
8.1 基本概念
8.2 評價模型
09 機器學習模型與工具
9.1 以距離為基礎的演算法
9.2 線性回歸與邏輯回歸
9.3 支援向量機
9.4 資訊熵和決策樹
9.5 連結規則
9.6 貝氏模型
9.7 隱馬可夫模型
9.8 整合演算法
10 模型選擇與相關技術
10.1 資料準備與模型選擇
10.2 自動機器學習架構
10.3 自然語言處理
10.4 建模相關技術
11 巨量資料競賽平台
11.1 定義問題
11.2 演算法競賽
12 決策問題:幸福感採擷
12.1 賽題解讀
12.2 模型初探
12.3 模型最佳化
12.4 模型輸出
12.5 XGBoost 模型
13 遷移學習:貓狗圖片分類
13.1 深度學習神經網路
13.2 使用現有的神經網路模型
13.3 遷移學習
13.4 解決貓狗分類問題
14 影像分割:識別圖中物體
14.1 Mask R-CNN 演算法
14.2 Mask R-CNN 原始程式
14.3 訓練模型與預測
15 時間序列分析
15.1 時序問題處理流程
15.2 趨勢分析工具ARIMA
15.3 傅立葉和小波轉換
15.4 Prophet 時序模型
16 自然語言處理:微博互動預測
16.1 賽題分析
16.2 中文分析
前言
01 Python 巨量資料開發入門
1.1 巨量資料工程師必備技能
1.2 Python 開發環境
1.3 Python 開發工具
1.4 Python 資料類型
1.5 Python 函數和類別
1.6 Python 常用函數庫
1.7 Python 技巧
1.8 Python 常見問題
02 科學計算Numpy
2.1 多維陣列
2.2 陣列元素運算
2.3 常用函數
03 資料操作Pandas
3.1 資料物件
3.2 資料存取
3.3 分組運算
3.4 日期時間處理
04 資料視覺化
4.1 Matplotlib 繪圖函數庫
4.2 Seaborn 進階資料視覺化
4.3 PyEcharts 互動圖
05 獲取資料
5.1 讀寫檔案
5.2 讀寫資料庫
5....