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