Python + Spark 2.0 + Hadoop 機器學習與大數據實戰

林大貴

  • Python + Spark 2.0 + Hadoop 機器學習與大數據實戰-preview-1
  • Python + Spark 2.0 + Hadoop 機器學習與大數據實戰-preview-2
  • Python + Spark 2.0 + Hadoop 機器學習與大數據實戰-preview-3
Python + Spark 2.0 + Hadoop 機器學習與大數據實戰-preview-1

買這商品的人也買了...

商品描述

本書從淺顯易懂的“大數據和機器學習”原理說明入手,講述大數據和機器學習的基本概念,如分類、分析、訓練、建模、預測、機器學習(推薦引擎)、機器學習(二元分類)、機器學習(多元分類)、機器學習(回歸分析)和數據可視化應用等。書中不僅加入了新近的大數據技術,還豐富了“機器學習”內容。 為降低讀者學習大數據技術的門檻,書中提供了豐富的上機實踐操作和範例程序詳解,展示瞭如何在單機Windows系統上通過Virtual Box虛擬機安裝多機Linux虛擬機,如何建立Hadoop集群,再建立Spark開發環境。書中介紹搭建的上機實踐平臺並不限制於單台實體電腦。對於有條件的公司和學校,參照書中介紹的搭建過程,同樣可以實現將自己的平臺搭建在多台實體電腦上,以便更加接近於大數據和機器學習真實的運行環境。 本書非常適合於學習大數據基礎知識的初學者閱讀,更適合正在學習大數據理論和技術的人員作為上機實踐用的教材。

目錄大綱

目   錄

 

 

第1章  Python Spark機器學習與Hadoop大數據 1

1.1  機器學習的介紹 2

1.2  Spark的介紹 5

1.3  Spark數據處理 RDD、DataFrame、Spark SQL 7

1.4  使用Python開發 Spark機器學習與大數據應用 8

1.5  Python Spark 機器學習 9

1.6  Spark ML Pipeline機器學習流程介紹 10

1.7  Spark 2.0的介紹 12

1.8  大數據定義 13

1.9  Hadoop 簡介 14

1.10  Hadoop HDFS分佈式文件系統 14

1.11  Hadoop MapReduce的介紹 17

1.12  結論 18

第2章  VirtualBox虛擬機軟件的安裝 19

2.1  VirtualBox的下載和安裝 20

2.2  設置VirtualBox存儲文件夾 23

2.3  在VirtualBox創建虛擬機 25

2.4  結論 29

第3章  Ubuntu Linux 操作系統的安裝 30

3.1  Ubuntu Linux 操作系統的安裝 31

3.2  在Virtual設置Ubuntu虛擬光盤文件 33

3.3  開始安裝Ubuntu 35

3.4  啟動Ubuntu 40

3.5  安裝增強功能 41

3.6  設置默認輸入法 45

3.7  設置“終端”程序 48

3.8  設置“終端”程序為白底黑字 49

3.9  設置共享剪貼板 50

3.10  設置最佳下載服務器 52

3.11  結論 56

第4章  Hadoop Single Node Cluster的安裝 57

4.1  安裝JDK 58

4.2  設置SSH無密碼登錄 61

4.3  下載安裝Hadoop 64

4.4  設置Hadoop環境變量 67

4.5  修改Hadoop配置設置文件 69

4.6  創建並格式化HDFS目錄 73

4.7  啟動Hadoop 74

4.8  打開Hadoop Resource-Manager Web界面 76

4.9  NameNode HDFS Web界面 78

4.10  結論 79

第5章  Hadoop Multi Node Cluster的安裝 80

5.1  把Single Node Cluster復制到data1 83

5.2  設置VirtualBox網卡 84

5.3  設置data1服務器 87

5.4  復制data1服務器到data2、data3、master 94

5.5  設置data2服務器 97

5.6  設置data3服務器 100

5.7  設置master服務器 102

5.8  master連接到data1、data2、data3 創建HDFS目錄 107

5.9  創建並格式化NameNode HDFS目錄 110

5.10  啟動Hadoop Multi Node Cluster 112

5.11  打開Hadoop ResourceManager Web界面 114

5.12  打開NameNode Web界面 115

5.13  停止Hadoop Multi Node Cluster 116

5.14  結論 116

第 6 章  Hadoop HDFS命令 117

6.1  啟動Hadoop Multi-Node Cluster 118

6.2  創建與查看HDFS目錄 120

6.3  從本地電腦復制文件到HDFS 122

6.4  將HDFS上的文件復制到本地電腦 127

6.5  復制與刪除HDFS文件 129

6.6  在Hadoop HDFS Web用戶界面瀏覽HDFS 131

6.7  結論 134

第7章  Hadoop MapReduce 135

7.1  簡單介紹WordCount.java 136

7.2  編輯WordCount.java 137

7.3  編譯WordCount.java 141

7.4  創建測試文本文件 143

7.5  運行WordCount.java 145

7.6  查看運行結果 146

7.7  結論 147

第8章  Python Spark的介紹與安裝 148

8.1  Scala的介紹與安裝 150

8.2  安裝Spark 153

8.3  啟動pyspark交互式界面 156

8.4  設置pyspark顯示信息 157

8.5  創建測試用的文本文件 159

8.6  本地運行pyspark程序 161

8.7  在Hadoop YARN運行pyspark 163

8.8  構建Spark Standalone Cluster運行環境 165

8.9  在Spark Standalone運行pyspark 171

8.10  Spark Web UI界面 173

8.11  結論 175

第9章  在 IPython Notebook 運行 Python Spark 程序 176

9.1  安裝Anaconda 177

9.2  在IPython Notebook使用Spark 180

9.3  打開IPython Notebook筆記本 184

9.4  插入程序單元格 185

9.5  加入註釋與設置程序代碼說明標題 186

9.6  關閉IPython Notebook 188

9.7  使用IPython Notebook在Hadoop YARN-client模式運行 189

9.8  使用IPython Notebook在Spark Stand Alone模式運行 192

9.9  整理在不同的模式運行IPython Notebook的命令 194

9.9.1  在 Local 啟動 IPython Notebook 195

9.9.2  在Hadoop YARN-client 模式啟動 IPython Notebook 195

9.9.3  在Spark Stand Alone 模式啟動 IPython Notebook 195

9.10  結論 196

第10章  Python Spark RDD 197

10.1  RDD的特性 198

10.2  開啟IPython Notebook 199

10.3  基本RDD“轉換”運算 201

10.4  多個RDD“轉換”運算 206

10.5  基本“動作”運算 208

10.6  RDD Key-Value 基本“轉換”運算 209

10.7  多個RDD Key-Value“轉換”運算 212

10.8  Key-Value“動作”運算 215

10.9  Broadcast 廣播變量 217

10.10  accumulator累加器 220

10.11  RDD Persistence持久化 221

10.12  使用Spark創建WordCount 223

10.13  Spark WordCount詳細解說 226

10.14  結論 228

第11章  Python Spark的集成開發環境 229

11.1  下載與安裝eclipse Scala IDE 232

11.2  安裝PyDev 235

11.3  設置字符串替代變量 240

11.4  PyDev 設置 Python 鏈接庫 243

11.5  PyDev設置anaconda2鏈接庫路徑 245

11.6  PyDev設置Spark Python鏈接庫 247

11.7  PyDev設置環境變量 248

11.8  新建PyDev項目 251

11.9  加入WordCount.py程序 253

11.10  輸入WordCount.py程序 254

11.11  創建測試文件並上傳至HDFS目錄 257

11.12  使用spark-submit執行WordCount程序 259

11.13  在Hadoop YARN-client上運行WordCount程序 261

11.14  在Spark Standalone Cluster上運行WordCount程序 264

11.15  在eclipse外部工具運行Python Spark程序 267

11.16  在eclipse運行spark-submit YARN-client 273

11.17  在eclipse運行spark-submit Standalone 277

11.18  結論 280

第12章  Python Spark創建推薦引擎 281

12.1  推薦算法介紹 282

12.2  “推薦引擎”大數據分析使用場景 282

12.3  ALS推薦算法的介紹 283

12.4  如何搜索數據 285

12.5  啟動IPython Notebook 289

12.6  如何準備數據 290

12.7  如何訓練模型 294

12.8  如何使用模型進行推薦 295

12.9  顯示推薦的電影名稱 297

12.10  創建Recommend項目 299

12.11  運行RecommendTrain.py 推薦程序代碼 302

12.12  創建Recommend.py推薦程序代碼 304

12.13  在eclipse運行Recommend.py 307

12.14  結論 310

第13章  Python Spark MLlib決策樹二元分類 311

13.1  決策樹介紹 312

13.2  “StumbleUpon Evergreen”大數據問題 313

13.2.1  Kaggle網站介紹 313

13.2.2  “StumbleUpon Evergreen”大數據問題場景分析 313

13.3  決策樹二元分類機器學習 314

13.4  如何搜集數據 315

13.4.1  StumbleUpon數據內容 315

13.4.2  下載 StumbleUpon 數據 316

13.4.3  用LibreOffice Calc 電子表格查看train.tsv 319

13.4.4  復制到項目目錄 322

13.5  使用IPython Notebook示範 323

13.6  如何進行數據準備 324

13.6.1  導入並轉換數據 324

13.6.2  提取 feature 特徵字段 327

13.6.3  提取分類特徵字段 328

13.6.4  提取數值特徵字段 331

13.6.5  返回特徵字段 331

13.6.6  提取 label 標簽字段 331

13.6.7  建立訓練評估所需的數據 332

13.6.8  以隨機方式將數據分為 3 部分並返回 333

13.6.9  編寫 PrepareData(sc) 函數 333

13.7  如何訓練模型 334

13.8  如何使用模型進行預測 335

13.9  如何評估模型的準確率 338

13.9.1  使用 AUC 評估二元分類模型 338

13.9.2  計算 AUC 339

13.10  模型的訓練參數如何影響準確率 341

13.10.1  建立 trainEvaluateModel 341

13.10.2  評估impurity參數 343

13.10.3  訓練評估的結果以圖表顯示 344

13.10.4  編寫 evalParameter 347

13.10.5  使用 evalParameter 評估 maxDepth 參數 347

13.10.6  使用 evalParameter 評估 maxBins 參數 348

13.11  如何找出準確率最高的參數組合 349

13.12  如何確認是否過度訓練 352

13.13  編寫RunDecisionTreeBinary.py程序 352

13.14  開始輸入RunDecisionTreeBinary.py程序 353

13.15  運行RunDecisionTreeBinary.py 355

13.15.1  執行參數評估 355

13.15.2  所有參數訓練評估找出最好的參數組合 355

13.15.3  運行 RunDecisionTreeBinary.py 不要輸入參數 357

13.16  查看DecisionTree的分類規則 358

13.17  結論 360

第14章  Python Spark MLlib 邏輯回歸二元分類 361

14.1  邏輯回歸分析介紹 362

14.2  RunLogisticRegression WithSGDBinary.py程序說明 363

14.3  運行RunLogisticRegression WithSGDBinary.py進行參數評估 367

14.4  找出最佳參數組合 370

14.5  修改程序使用參數進行預測 370

14.6  結論 372

第15章  Python Spark MLlib支持向量機SVM二元分類 373

15.1  支持向量機SVM算法的基本概念 374

15.2  運行SVMWithSGD.py進行參數評估 376

15.3  運行SVMWithSGD.py 訓練評估參數並找出最佳參數組合 378

15.4  運行SVMWithSGD.py 使用最佳參數進行預測 379

15.5  結論 381

第16章  Python Spark MLlib樸素貝葉斯二元分類 382

16.1  樸素貝葉斯分析原理的介紹 383

16.2  RunNaiveBayesBinary.py程序說明 384

16.3  運行NaiveBayes.py進行參數評估 386

16.4  運行訓練評估並找出最好的參數組合 387

16.5  修改RunNaiveBayesBinary.py 直接使用最佳參數進行預測 388

16.6  結論 390

第17章  Python Spark MLlib決策樹多元分類 391

17.1  “森林覆蓋植被”大數據問題分析場景 392

17.2  UCI Covertype數據集介紹 393

17.3  下載與查看數據 394

17.4  修改PrepareData() 數據準備 396

17.5  修改trainModel 訓練模型程序 398

17.6  使用訓練完成的模型預測數據 399

17.7  運行RunDecisionTreeMulti.py 進行參數評估 401

17.8  運行RunDecisionTreeMulti.py 訓練評估參數並找出最好的參數組合 403

17.9  運行RunDecisionTreeMulti.py 不進行訓練評估 404

17.10  結論 406

第18章  Python Spark MLlib決策樹回歸分析 407

18.1  Bike Sharing大數據問題分析 408

18.2  Bike Sharing數據集 409

18.3  下載與查看數據 409

18.4  修改 PrepareData() 數據準備 412

18.5  修改DecisionTree.trainRegressor訓練模型 415

18.6  以 RMSE 評估模型準確率 416

18.7  訓練評估找出最好的參數組合 417

18.8  使用訓練完成的模型預測數據 417

18.9  運行RunDecisionTreeMulti.py進行參數評估 419

18.10  運行RunDecisionTreeMulti.py訓練評估參數並找出最好的參數組合 421

18.11  運行RunDecisionTreeMulti.py 不進行訓練評估 422

18.12  結論 424

第19章  Python Spark SQL、DataFrame、RDD數據統計與可視化 425

19.1  RDD、DataFrame、Spark SQL 比較 426

19.2  創建RDD、DataFrame與Spark SQL 427

19.2.1  在 local 模式運行 IPython Notebook 427

19.2.2  創建RDD 427

19.2.3  創建DataFrame 428

19.2.4  設置 IPython Notebook 字體 430

19.2.5  為DataFrame 創建別名 431

19.2.6  開始使用 Spark SQL 431

19.3  SELECT顯示部分字段 434

19.3.1  使用 RDD 選取顯示部分字段 434

19.3.2  使用 DataFrames 選取顯示字段 434

19.3.3  使用 Spark SQL 選取顯示字段 435

19.4  增加計算字段 436

19.4.1  使用 RDD 增加計算字段 436

19.4.2  使用 DataFrames 增加計算字段 436

19.4.3  使用 Spark SQL 增加計算字段 437

19.5  篩選數據 438

19.5.1  使用 RDD 篩選數據 438

19.5.2  使用 DataFrames 篩選數據 438

19.5.3  使用 Spark SQL 篩選數據 439

19.6  按單個字段給數據排序 439

19.6.1  RDD 按單個字段給數據排序 439

19.6.2  使用 Spark SQL排序 440

19.6.3  使用 DataFrames按升序給數據排序 441

19.6.4  使用 DataFrames按降序給數據排序 442

19.7  按多個字段給數據排序 442

19.7.1  RDD 按多個字段給數據排序 442

19.7.2  Spark SQL 按多個字段給數據排序 443

19.7.3  DataFrames 按多個字段給數據排序 443

19.8  顯示不重復的數據 444

19.8.1  RDD 顯示不重復的數據 444

19.8.2  Spark SQL 顯示不重復的數據 445

19.8.3  Dataframes顯示不重復的數據 445

19.9  分組統計數據 446

19.9.1  RDD 分組統計數據 446

19.9.2  Spark SQL分組統計數據 447

19.9.3  Dataframes分組統計數據 448

19.10  Join 聯接數據 450

19.10.1  創建 ZipCode 450

19.10.2  創建 zipcode_tab 452

19.10.3  Spark SQL 聯接 zipcode_table 數據表 454

19.10.4  DataFrame user_df 聯接 zipcode_df 455

19.11  使用 Pandas DataFrames 繪圖 457

19.11.1  按照不同的州統計並以直方圖顯示 457

19.11.2  按照不同的職業統計人數並以圓餅圖顯示 459

19.12  結論 461

第20章  Spark ML Pipeline 機器學習流程二元分類 462

20.1  數據準備 464

20.1.1  在 local 模式執行 IPython Notebook 464

20.1.2  編寫 DataFrames UDF 用戶自定義函數 466

20.1.3  將數據分成 train_df 與 test_df 468

20.2  機器學習pipeline流程的組件 468

20.2.1  StringIndexer 468

20.2.2  OneHotEncoder 470

20.2.3  VectorAssembler 472

20.2.4  使用 DecisionTreeClassi?er 二元分類 474

20.3  建立機器學習pipeline流程 475

20.4  使用pipeline進行數據處理與訓練 476

20.5  使用pipelineModel 進行預測 477

20.6  評估模型的準確率 478

20.7  使用TrainValidation進行訓練驗證找出最佳模型 479

20.8  使用crossValidation交叉驗證找出最佳模型 481

20.9  使用隨機森林 RandomForestClassi?er分類器 483

20.10  結論 485

第21章  Spark ML Pipeline 機器學習流程多元分類 486

21.1  數據準備 487

21.1.1  讀取文本文件 488

21.1.2  創建 DataFrame 489

21.1.3  轉換為 double 490

21.2  建立機器學習pipeline流程 492

21.3  使用dt_pipeline進行數據處理與訓練 493

21.4  使用pipelineModel 進行預測 493

21.5  評估模型的準確率 495

21.4  使用TrainValidation進行訓練驗證找出最佳模型 496

21.7  結論 498

第22章  Spark ML Pipeline 機器學習流程回歸分析 499

22.1  數據準備 501

22.1.1  在local 模式執行 IPython Notebook 501

22.1.2  將數據分成 train_df 與 test_df 504

22.2  建立機器學習pipeline流程 504

22.3  使用dt_pipeline進行數據處理與訓練 506

22.4  使用pipelineModel 進行預測 506

22.5  評估模型的準確率 507

22.6  使用TrainValidation進行訓練驗證找出最佳模型 508

22.7  使用crossValidation進行交叉驗證找出最佳模型 510

22.8  使用GBT Regression 511

22.9  結論 513

附錄A  本書範例程序下載與安裝說明 514

A.1  下載範例程序 515

A.2  打開本書IPython Notebook範例程序 516

A.3  打開 eclipse PythonProject 範例程序 518