本書包含16個有趣的編程項目,共分為12章。每章從一個明確的項目目標(biāo)開始,引導(dǎo)讀者像程序員一樣思考解決問題的方法并完成任務(wù)。本書介紹用貝葉斯法則確定事件概率,用自然語言處理技術(shù)分析語料庫,用collections和random等模塊加密字符,用OpenCV和NumPy等庫實現(xiàn)圖像差異檢測、圖像屬性測量、人臉檢測、人臉識別等計算機視覺應(yīng)用,用turtle模塊模擬圖像移動軌跡,用pandas庫分析數(shù)據(jù),用bokeh等庫進(jìn)行數(shù)據(jù)可視化。通過對本書的學(xué)習(xí),讀者將學(xué)會使用Python創(chuàng)建完整、實用的Python程序。
本書能幫助Python初學(xué)者理解編程思想并培養(yǎng)Python編程技能,也能幫助有一定編程基礎(chǔ)的Python程序員從項目實戰(zhàn)中獲得解決實際問題的啟發(fā)。
1.適用于Python 3.7及以上版本,提供配套源代碼。
2.16個有趣的項目案例,實用性和趣味性兼?zhèn)洹?3.項目式的學(xué)習(xí)方法,提升分析和解決實際問題的能力。
本書每章先介紹一個明確的項目目標(biāo)并討論問題的解決方法,然后給出一個任務(wù),例如指導(dǎo)海岸警衛(wèi)隊的搜救工作、策劃并執(zhí)行NASA的月球飛行、使用人臉識別保護(hù)進(jìn)入安全實驗室的通道等,讓讀者像程序員一樣思考。在這個過程中,讀者將學(xué)會如何:
·使用matplotlib、NumPy、bokeh、pandas、requests、Beautiful Soup和turtle等庫;
·使用自然語言處理和計算機視覺模塊,如NLTK和OpenCV;
·編寫程序,探測和跟蹤在星域中移動的物體;
·從網(wǎng)上抓取演講稿,并自動進(jìn)行總結(jié);
·使用火星軌道器激光測高儀(MOLA)地圖選擇航天器的著陸點;
·使用數(shù)據(jù)繪圖和可視化工具,繪制地圖并實現(xiàn)人口密度可視化。
本書中的程序?qū)Τ鯇W(xué)者很友好,而且隨著內(nèi)容的不斷深入,讀者將學(xué)到更多復(fù)雜的技術(shù),提升編程能力,最終達(dá)到用Python解決實際問題的目的。
李·沃恩(Lee Vaughan)是一位程序員、流行文化愛好者、教育工作者。作為?松梨诠镜那爸鞴芗壙茖W(xué)家,他負(fù)責(zé)構(gòu)建和審查計算機模型,開發(fā)和測試軟件,并培訓(xùn)地質(zhì)學(xué)家和工程師。除了本書,他還撰寫了《Python編程實戰(zhàn)——妙趣橫生的項目之旅》,他通過這兩本書幫助讀者提升Python技能,并使讀者在學(xué)習(xí)的過程中獲得樂趣!
第 1章 用貝葉斯法則營救失事船只的船員 1
1.1 貝葉斯法則 1
1.2 項目1:搜索和救援 4
1.2.1 策略 4
1.2.2 安裝Python庫 5
1.2.3 貝葉斯代碼 7
1.2.4 玩游戲 18
1.3 小結(jié) 19
1.4 延伸閱讀 20
1.5 挑戰(zhàn)項目:更聰明的搜索 20
1.6 挑戰(zhàn)項目:用蒙特卡洛模擬尋找最佳策略 20
1.7 挑戰(zhàn)項目:計算檢測概率 20
第 2章 用計量文體學(xué)來確定作者的身份 22
2.1 項目2:《巴斯克維爾的獵犬》《世界大戰(zhàn)》和《失落的世界》 22
2.1.1 策略 23
2.1.2 安裝NLTK 23
2.1.3 語料庫 26
2.1.4 計量文體學(xué)代碼 26
2.2 小結(jié) 38
2.3 延伸閱讀 39
2.4 實踐項目:用分散圖分析《巴斯克維爾的獵犬》 39
2.5 實踐項目:標(biāo)點符號熱圖 40
2.6 挑戰(zhàn)項目:修正頻率 41
第3章 用自然語言處理總結(jié)演講 42
3.1 項目3:《我有一個夢想》總結(jié)演講稿! 42
3.1.1 策略 43
3.1.2 網(wǎng)頁抓取 43
3.1.3 《我有一個夢想》的代碼 43
3.2 項目4:用gensim總結(jié)演講內(nèi)容 50
3.2.1 安裝gensim 50
3.2.2 《整理你的床》的代碼 51
3.3 項目5: 用詞云總結(jié)文本 53
3.3.1 詞云和PIL模塊 53
3.3.2 詞云的代碼 54
3.3.3 微調(diào)詞云 57
3.4 小結(jié) 59
3.5 延伸閱讀 59
3.6 挑戰(zhàn)項目:游戲之夜 59
3.7 挑戰(zhàn)項目:對總結(jié)進(jìn)行總結(jié) 60
3.8 挑戰(zhàn)項目:小說總結(jié) 61
3.9 挑戰(zhàn)項目:不只是你說什么,而是你怎么說! 62
第4章 使用書籍密碼發(fā)送超級秘密消息 63
4.1 一次性密碼本 63
4.2 瑞貝卡密碼 65
4.3 項目6:Rebecca的數(shù)字密鑰 65
4.3.1 策略 66
4.3.2 加密代碼 67
4.3.3 發(fā)送消息 74
4.4 小結(jié) 74
4.5 延伸閱讀 74
4.6 實踐項目:對字符繪圖 75
4.7 實踐項目:發(fā)送秘密 76
第5章 發(fā)現(xiàn)冥王星 78
5.1 項目7:復(fù)制閃爍比較器 79
5.1.1 策略 80
5.1.2 數(shù)據(jù) 80
5.1.3 閃爍比較器代碼 81
5.1.4 使用閃爍比較器 91
5.2 項目8:用圖像差異探測瞬變天體 93
5.2.1 策略 93
5.2.2 瞬變探測器代碼 93
5.2.3 使用瞬變探測器 98
5.3 小結(jié) 98
5.4 延伸閱讀 99
5.5 實踐項目:繪制軌道路徑 99
5.6 實踐項目:區(qū)別是什么 99
5.7 挑戰(zhàn)項目:數(shù)星星 100
第6章 模擬阿波羅8號的自由返回軌跡 101
6.1 理解阿波羅8號任務(wù) 102
6.1.1 自由返回軌跡 102
6.1.2 三體問題 103
6.2 項目9:與阿波羅8號一起登月! 103
6.2.1 使用turtle模塊 104
6.2.2 策略 107
6.2.3 阿波羅8號自由返回的代碼 108
6.2.4 運行模擬 118
6.3 小結(jié) 120
6.4 延伸閱讀 120
6.5 實踐項目:模擬搜索模式 120
6.6 實踐項目:讓CSM啟動 122
6.7 實踐項目:讓CSM停下來 122
6.8 挑戰(zhàn)項目:真實比例模擬 123
6.9 挑戰(zhàn)項目:真正的阿波羅8號 123
第7章 選擇火星著陸點 124
7.1 如何登陸火星 124
7.2 MOLA地圖 125
7.3 項目10:選擇火星登陸點 126
7.3.1 策略 126
7.3.2 地點選擇器代碼 127
7.3.3 結(jié)果 140
7.4 小結(jié) 141
7.5 延伸閱讀 141
7.6 實踐項目:確認(rèn)繪畫成為圖像的一部分 142
7.7 實踐項目:提取高程剖面圖 142
7.8 實踐項目:3D繪圖 143
7.9 實踐項目:混合地圖 143
7.10 挑戰(zhàn)項目:三人成列 145
7.11 挑戰(zhàn)項目:繞回矩形 145
第8章 探測遙遠(yuǎn)的系外行星 147
8.1 凌星測光法 147
8.2 項目11:模擬系外行星的凌星過程 149
8.2.1 策略 150
8.2.2 凌星代碼 150
8.2.3 凌星測光實驗 155
8.3 項目12:系外行星成像 157
8.3.1 策略 157
8.3.2 Pixelator代碼 159
8.4 小結(jié) 163
8.5 延伸閱讀 163
8.6 實踐項目:探測外星巨型建筑 164
8.7 實踐項目:探測小行星凌星 165
8.8 實踐項目:考慮臨邊昏暗 166
8.9 實踐項目:探測星斑 169
8.10 實踐項目:探測外星艦隊 169
8.11 實踐項目:探測有月亮的行星 170
8.12 實踐項目:測量系外行星的日長 170
8.13 挑戰(zhàn)項目:生成動態(tài)光度曲線 171
第9章 識別朋友或敵人 172
9.1 檢測照片中的人臉 172
9.2 項目13:編寫機器人哨兵炮程序 173
9.2.1 策略 175
9.2.2 代碼 175
9.2.3 結(jié)果 185
9.3 從視頻流中檢測人臉 186
9.4 小結(jié) 189
9.5 延伸閱讀 189
9.6 實踐項目:模糊人臉 189
9.7 挑戰(zhàn)項目:檢測貓臉 190
第 10章 用人臉識別限制訪問 191
10.1 用局部二進(jìn)制模式直方圖識別人臉 191
10.1.1 人臉識別流程圖 192
10.1.2 提取局部二進(jìn)制模式直方圖 193
10.2 項目14:限制接觸外星制品 195
10.2.1 策略 195
10.2.2 支持模塊和文件 196
10.2.3 視頻采集代碼 196
10.2.4 人臉訓(xùn)練器代碼 200
10.2.5 人臉預(yù)測器代碼 202
10.2.6 結(jié)果 204
10.3 小結(jié) 205
10.4 延伸閱讀 205
10.5 挑戰(zhàn)項目:添加密碼和視頻采集 205
10.6 挑戰(zhàn)項目:長得像和雙胞胎 206
10.7 挑戰(zhàn)項目:時間機器 206
第 11章 創(chuàng)建交互式僵尸逃離地圖 207
11.1 項目15:用地區(qū)分布圖實現(xiàn)人口密度可視化 207
11.1.1 策略 208
11.1.2 Python數(shù)據(jù)分析庫 208
11.1.3 bokeh和holoviews庫 210
11.1.4 安裝pandas、bokeh和holoviews 210
11.1.5 訪問縣、州、失業(yè)和人口數(shù)據(jù) 210
11.1.6 侵入holoviews 212
11.1.7 地區(qū)分布圖代碼 214
11.1.8 計劃逃離 220
11.2 小結(jié) 223
11.3 延伸閱讀 224
11.4 挑戰(zhàn)項目:繪制美國人口變化圖 224
第 12章 我們生活在計算機模擬中嗎 225
12.1 項目16:生命、宇宙和耶爾特的池塘 225
12.1.1 池塘模擬代碼 226
12.1.2 池塘模擬的影響 228
12.1.3 測量穿越格子的成本 230
12.1.4 結(jié)果 232
12.1.5 策略 232
12.2 小結(jié) 233
12.3 延伸閱讀 233
12.4 繼續(xù)前進(jìn) 234
12.5 挑戰(zhàn)項目:尋找安全空間 234
12.6 挑戰(zhàn)項目:太陽來了 235
12.7 挑戰(zhàn)項目:通過狗的眼睛看 235
12.8 挑戰(zhàn)項目:自定義單詞搜索 235
12.9 挑戰(zhàn)項目:簡化慶典幻燈片 235
12.10 挑戰(zhàn)項目:編織一張糾結(jié)的網(wǎng) 235
12.11 挑戰(zhàn)項目:走,去山上告訴它 236
附錄 實踐項目解決方案 237