Preface
前言
感謝
首先感謝大家的信任。
作者僅僅是在學(xué)習(xí)應(yīng)用數(shù)學(xué)科學(xué)和機(jī)器學(xué)習(xí)算法時(shí),多讀了幾本數(shù)學(xué)書,多做了一些思考和知識(shí)整理而已。知者不言,言者不知。知者不博,博者不知。由于作者水平有限,斗膽把自己有限所學(xué)所思與大家分享,作者權(quán)當(dāng)無知者無畏。希望大家在 B 站視頻下方和 GitHub 多提意見,讓鳶尾花數(shù)學(xué)大系從加減乘除到機(jī)器學(xué)習(xí)叢書成為作者和讀者共同參與創(chuàng)作的優(yōu)質(zhì)作品。
特別感謝清華大學(xué)出版社的欒大成老師。從選題策劃、內(nèi)容創(chuàng)作到裝幀設(shè)計(jì),欒老師事無巨細(xì)、一路陪伴。每次與欒老師交流,都能感受到他對(duì)優(yōu)質(zhì)作品的追求、對(duì)知識(shí)分享的熱情。
出來混總是要還的
曾經(jīng),考試是我們學(xué)習(xí)數(shù)學(xué)的唯一動(dòng)力?荚囀穷^懸梁的繩,是錐刺股的錐。我們中的絕大多數(shù)人從小到大為各種考試埋頭題海,學(xué)數(shù)學(xué)味同嚼蠟,甚至讓人恨之入骨。
數(shù)學(xué)給我們帶來了無盡的折磨。我們甚至恐懼?jǐn)?shù)學(xué),憎恨數(shù)學(xué),恨不得一走出校門就把數(shù)學(xué)拋之腦后,老死不相往來。
可悲可笑的是,我們很多人可能會(huì)在畢業(yè)的五年或十年以后,因?yàn)楣ぷ餍枰,不得不重新學(xué)習(xí)微積分、線性代數(shù)、概率統(tǒng)計(jì),悔恨當(dāng)初沒有學(xué)好數(shù)學(xué),走了很多彎路,沒能學(xué)以致用,甚至遷怒于教材和老師。
這一切不能都怪?jǐn)?shù)學(xué),值得反思的是我們學(xué)習(xí)數(shù)學(xué)的方法和目的。
再給自己一個(gè)學(xué)數(shù)學(xué)的理由
為考試而學(xué)數(shù)學(xué),是被逼無奈的舉動(dòng)。而為數(shù)學(xué)而學(xué)數(shù)學(xué),則又太過高尚而遙不可及。
相信對(duì)于絕大部分的我們來說,數(shù)學(xué)是工具,是謀生手段,而不是目的。我們主動(dòng)學(xué)數(shù)學(xué),是想用數(shù)學(xué)工具解決具體問題。
現(xiàn)在,本叢書給大家?guī)硪粋(gè)學(xué)數(shù)學(xué)、用數(shù)學(xué)的全新動(dòng)力數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)。
數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)已經(jīng)深度融合到我們生活的方方面面,而數(shù)學(xué)正是開啟未來大門的鑰匙。不是所有人生來都握有一副好牌,但是掌握數(shù)學(xué) 編程 機(jī)器學(xué)習(xí)的知識(shí)絕對(duì)是王牌。這次,學(xué)習(xí)數(shù)學(xué)不再是為了考試、分?jǐn)?shù)、升學(xué),而是投資時(shí)間、自我實(shí)現(xiàn)、面向未來。
未來已來,你來不來?
本叢書如何幫到你
為了讓大家學(xué)數(shù)學(xué)、用數(shù)學(xué),甚至愛上數(shù)學(xué),作者可謂頗費(fèi)心機(jī)。在叢書創(chuàng)作時(shí),作者盡量克服傳統(tǒng)數(shù)學(xué)教材的各種弊端,讓大家學(xué)習(xí)時(shí)有興趣、看得懂、有思考、更自信、用得著。
為此,叢書在內(nèi)容創(chuàng)作上突出以下幾個(gè)特點(diǎn)。
雖然本書標(biāo)榜從加減乘除到機(jī)器學(xué)習(xí),但是建議讀者朋友們至少具備高中數(shù)學(xué)知識(shí)。如果讀者正在學(xué)習(xí)或曾經(jīng)學(xué)過大學(xué)數(shù)學(xué) (微積分、線性代數(shù)、概率統(tǒng)計(jì)),那么就更容易讀懂本叢書了。
聊聊數(shù)學(xué)
數(shù)學(xué)是工具。錘子是工具,剪刀是工具,數(shù)學(xué)也是工具。
數(shù)學(xué)是思想。數(shù)學(xué)是人類思想高度抽象的結(jié)晶體。在其冷酷的外表之下,數(shù)學(xué)的內(nèi)核實(shí)際上就是人類樸素的思想。學(xué)習(xí)數(shù)學(xué)時(shí),知其然,更要知其所以然。不要死記硬背公式定理,理解背后的數(shù)學(xué)思想才是關(guān)鍵。如果你能畫一幅圖、用大白話描述清楚一個(gè)公式、一則定理,這就說明你真正理解了她。
數(shù)學(xué)是語言。就好比世界各地不同種族有自己的語言,數(shù)學(xué)則是人類共同的語言和邏輯。數(shù)學(xué)這門語言極其精準(zhǔn)、高度抽象,放之四海而皆準(zhǔn)。雖然我們中大多數(shù)人沒有被數(shù)學(xué)女神選中,不能為人類對(duì)數(shù)學(xué)認(rèn)知開疆拓土,但是這絲毫不妨礙我們使用數(shù)學(xué)這門語言。就好比,我們不會(huì)成為語言學(xué)家,我們完全可以使用母語和外語交流。
數(shù)學(xué)是體系。代數(shù)、幾何、線性代數(shù)、微積分、概率統(tǒng)計(jì)、優(yōu)化方法等,看似一個(gè)個(gè)孤島,實(shí)際上都是數(shù)學(xué)網(wǎng)絡(luò)的一條條織線。建議大家學(xué)習(xí)時(shí),特別關(guān)注不同數(shù)學(xué)板塊之間的聯(lián)系,見樹,更要見林。
數(shù)學(xué)是基石。拿破侖曾說:數(shù)學(xué)的日臻完善和國強(qiáng)民富息息相關(guān)。數(shù)學(xué)是科學(xué)進(jìn)步的根基,
是經(jīng)濟(jì)繁榮的支柱,是保家衛(wèi)國的武器,是探索星辰大海的航船。
數(shù)學(xué)是藝術(shù)。數(shù)學(xué)和音樂、繪畫、建筑一樣,都是人類藝術(shù)體驗(yàn)。通過可視化工具,我們會(huì)在看似枯燥的公式、定理、數(shù)據(jù)背后,發(fā)現(xiàn)數(shù)學(xué)之美。
II
數(shù)學(xué)是歷史,是人類共同記憶體。歷史是過去,又屬于現(xiàn)在,同時(shí)在指引未來。數(shù)學(xué)是人類的集體學(xué)習(xí)思考,她把人的思維符號(hào)化、形式化,進(jìn)而記錄、積累、傳播、創(chuàng)新、發(fā)展。從甲骨、泥板、石板、竹簡、木牘、紙草、羊皮卷、活字印刷、紙質(zhì)書,到數(shù)字媒介,這一過程持續(xù)了數(shù)千年, 至今綿延不息。
數(shù)學(xué)是無窮無盡的想象力,是人類的好奇心,是自我挑戰(zhàn)的毅力,是一個(gè)接著一個(gè)的問題,是看似荒誕不經(jīng)的猜想,是一次次膽大包天的批判性思考,是敢于站在前人臂膀之上的勇氣,是孜孜不倦地延展人類認(rèn)知邊界的不懈努力。
家園、詩、遠(yuǎn)方
諾瓦利斯曾說:哲學(xué)就是懷著一種鄉(xiāng)愁的沖動(dòng)到處去尋找家園。
在紛繁復(fù)雜的塵世,數(shù)學(xué)純粹得就像精神的世外桃源。數(shù)學(xué)是一束光、一條巷、一團(tuán)不滅的希望、一股磅礴的力量、一個(gè)值得寄托的避風(fēng)港。
打破陳腐的鎖鏈,把功利心暫放一邊,我們一道懷揣一份鄉(xiāng)愁,心存些許詩意,踩著藝術(shù)維度, 投入數(shù)學(xué)張開的臂膀,駛?cè)胨拾邤、變幻無窮的深港,感受久違的歸屬,一睹更美、更好的遠(yuǎn)方。
前言 《統(tǒng)計(jì)至簡》
III
Acknowledgement
致謝
To my parents.
謹(jǐn)以此書獻(xiàn)給我的母親父親。
How to Use the Book
使用本書
叢書資源
本系列叢書提供的配套資源有以下幾個(gè)。
在紙質(zhì)圖書中,為了方便大家查找不同配套資源,作者特別設(shè)計(jì)了以下幾個(gè)標(biāo)識(shí)。
數(shù)學(xué)家、科學(xué)家、藝術(shù)家等語錄
代碼中核心Python 庫函數(shù)和講解
思維導(dǎo)圖總結(jié)本章脈絡(luò)和核心內(nèi)容
配套Python代碼完成核心計(jì)算和制圖
引出本書或本系列
其他圖書相關(guān)內(nèi)容
相關(guān)數(shù)學(xué)家生平貢獻(xiàn)介紹
用Streamlit開發(fā)制作App
提醒讀者格外注意的知識(shí)點(diǎn)
每章結(jié)束總結(jié)或升 華本章內(nèi)容
介紹數(shù)學(xué)工具、機(jī)器學(xué)習(xí)之間的聯(lián)系
每章配套微課視頻二維碼
本書核心參考文獻(xiàn)和推薦閱讀文獻(xiàn)
微課視頻
本書配套微課視頻均發(fā)布在B站生姜DrGinger。
微課視頻是以聊天的方式,和大家探討某個(gè)數(shù)學(xué)話題的重點(diǎn)內(nèi)容,講解代碼中可能遇到的難點(diǎn),甚至侃侃歷史、說說時(shí)事、聊聊生活。
本書配套微課視頻的目的是引導(dǎo)大家自主編程實(shí)踐、探究式學(xué)習(xí),并不是照本宣科。
紙質(zhì)圖書上已經(jīng)寫得很清楚的內(nèi)容,視頻課程只會(huì)強(qiáng)調(diào)重點(diǎn)。需要說明的是,圖書內(nèi)容不是視頻的逐字稿。
App開發(fā)
本書配套多個(gè)用Streamlit開發(fā)的App,用來展示數(shù)學(xué)動(dòng)畫、數(shù)據(jù)分析、機(jī)器學(xué)習(xí)算法。
Streamlit是個(gè)開源的Python庫,能夠方便快捷地搭建、部署交互型網(wǎng)頁App。Streamlit簡單易用,很受歡迎。Streamlit兼容目前主流的Python數(shù)據(jù)分析庫,比如NumPy、Pandas、Scikit-learn、PyTorch、TensorFlow等。Streamlit還支持Plotly、Bokeh、Altair等交互可視化庫。
本書中很多App設(shè)計(jì)都采用Streamlit Plotly方案。此外,本書專門配套教學(xué)視頻手把手和大家一起做App。
大家可以參考如下頁面,更多了解Streamlit:
實(shí)踐平臺(tái)
本書作者編寫代碼時(shí)采用的IDE (Integrated Development Environment) 是Spyder,目的是給大家提供簡潔的Python代碼文件。
但是,建議大家采用JupyterLab或Jupyter Notebook作為鳶尾花書配套學(xué)習(xí)工具。
簡單來說,Jupyter集瀏覽器 編程 文檔 繪圖 多媒體 發(fā)布眾多功能于一身,非常適合探究式學(xué)習(xí)。
運(yùn)行Jupyter無需IDE,只需要瀏覽器。Jupyter容易分塊執(zhí)行代碼。Jupyter支持inline打印結(jié)果,直接將結(jié)果圖片打印在分塊代碼下方。Jupyter還支持很多其他語言,如R和Julia。
使用Markdown文檔編輯功能,可以在編程的同時(shí)寫筆記,不需要額外創(chuàng)建文檔。在Jupyter中插入圖片和視頻鏈接都很方便,此外還可以插入LaTex公式。對(duì)于長文檔,可以用邊欄目錄查找特定內(nèi)容。
Jupyter發(fā)布功能很友好,方便打印成HTML、PDF等格式文件。
VI
Jupyter也并不完美,目前尚待解決的問題有幾個(gè):Jupyter中代碼調(diào)試不是特別方便。Jupyter沒有variable explorer,可以在線打印數(shù)據(jù),也可以將數(shù)據(jù)寫到CSV或Excel文件中再打開。Matplotlib 圖像結(jié)果不具有交互性,如不能查看某個(gè)點(diǎn)的值或者旋轉(zhuǎn)3D圖形,此時(shí)可以考慮安裝 (Jupyter Matplotlib)。注意,利用Altair或Plotly繪制的圖像支持交互功能。對(duì)于自定義函數(shù),目前沒有快捷鍵直接跳轉(zhuǎn)到其定義。但是,很多開發(fā)者針對(duì)這些問題正在開發(fā)或已經(jīng)發(fā)布相應(yīng)插件,請(qǐng)大家留意。
大家可以下載安裝Anaconda。JupyterLab、Spyder、PyCharm等常用工具,都集成在Anaconda 中。下載Anaconda的地址為:
JupyterLab探究式學(xué)習(xí)視頻:
代碼文件
鳶尾花書的Python代碼文件下載地址為:
同時(shí)也在如下GitHub地址備份更新:
Python代碼文件會(huì)不定期修改,請(qǐng)大家注意更新。圖書原始創(chuàng)作版本PDF(未經(jīng)審校和修訂,內(nèi)容和紙質(zhì)版略有差異,方便移動(dòng)終端碎片化學(xué)習(xí)以及對(duì)照代碼)和紙質(zhì)版本勘誤也會(huì)上傳到這個(gè)GitHub 賬戶。因此,建議大家注冊(cè)GitHub賬戶,給書稿文件夾標(biāo)星 (Star) 或分支克隆 (Fork)。
考慮再三,作者還是決定不把代碼全文印在紙質(zhì)書中,以便減少篇幅,節(jié)約用紙。
本書編程實(shí)踐例子中主要使用鳶尾花數(shù)據(jù)集,數(shù)據(jù)來源是Scikit-learn庫、Seaborn庫。要是給
鳶尾花數(shù)學(xué)大系起個(gè)昵稱的話,作者樂見鳶尾花書。
使用本書
《統(tǒng)計(jì)至簡》
VII
學(xué)習(xí)指南
大家可以根據(jù)自己的偏好制定學(xué)習(xí)步驟,本書推薦如下步驟。
1
瀏覽本章思維導(dǎo)圖, 把握核心脈絡(luò)
4
用Jupyter 創(chuàng)建筆記,編程實(shí)踐
2
下載本章配套
Python 代碼文件
5
嘗試開發(fā)數(shù)學(xué)動(dòng)畫、機(jī)器學(xué)習(xí) App
3
觀看微課視頻,閱讀本章正文內(nèi)容
6
翻閱本書推薦參
考文獻(xiàn)
學(xué)完每章后,大家可以在社交媒體、技術(shù)論壇上發(fā)布自己的Jupyter筆記,進(jìn)一步聽取朋友們的意見,共同進(jìn)步。這樣做還可以提高自己學(xué)習(xí)的動(dòng)力。
另外,建議大家采用紙質(zhì)書和電子書配合閱讀學(xué)習(xí),學(xué)習(xí)主陣地在紙質(zhì)書上,學(xué)習(xí)基礎(chǔ)課程最重要的是沉下心來,認(rèn)真閱讀并記錄筆記,電子書可以配合查看代碼,相關(guān)實(shí)操性內(nèi)容可以直接在電腦上開發(fā)、運(yùn)行、感受,Jupyter筆記同步記錄起來。
強(qiáng)調(diào)一點(diǎn):學(xué)習(xí)過程中遇到困難,要嘗試自行研究解決,不要第一時(shí)間就去尋求他人幫助。
意見和建議
歡迎大家對(duì)鳶尾花書提意見和建議,叢書專屬郵箱地址為:
也歡迎大家在B站視頻下方留言互動(dòng)。