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