如何通過Python機器學習提高您的編程技能
在本文中,將介紹Packt編寫的Python Machine Learning,第三版,對于已經具有ML和數據科學基礎知識的開發人員來說,這是一個很好的資源。
掌握數學和編程技巧
即時而言,Python機器學習不適用于業余愛好者。作者假定您具有可靠的Python命令。本書使用了一些高級列表和收集功能。(非常感謝)還有一些面向對象的編程技術,使您可以將可重用的組件用于您的機器學習程序。
您還需要具有NumPy,Pandas和Matplotlib等數據科學庫的基礎知識,盡管本書對它們的功能進行了更詳細的介紹。
除非您對數據科學,微積分和統計的基礎知識有一定的了解,否則您會發現Python Machine Learning有點復雜和混亂。數學比入門書籍要復雜得多。您會發現很多用于損失函數,正則化函數,感知器,神經網絡等的演算公式。
但是Python機器學習的作者通過示例和逐步的編碼經驗在解釋這些公式方面做得很好。這些示例使內容可供更廣泛的讀者訪問,并使該書與為學術讀者編寫的教科書區分開。
也有很多相關論文的參考文獻,它們提供了有關不同機器學習和深度學習概念的深入解釋,如果您想進一步擴展在Python機器學習中學習的知識,這將非常有用。
對機器學習的一些面向對象的熱愛
大多數機器學習和數據科學書籍都專注于編寫結構化代碼,并依賴于在示例之間復制和粘貼代碼。另一方面,Python機器學習引入了面向對象的概念來創建簡潔且可重用的代碼,這是我真正喜歡的。
當然,對于不熟悉繼承,抽象和多態性等概念的開發人員,OOP的引入使本書變得更加復雜。但是有可能,如果您想在構建機器學習應用程序方面取得成功,就需要OOP技能。
Python機器學習還提供了sklearn的強大層次分解。這將幫助您更好地理解和利用您將在機器學習項目中經常使用的Python庫之一的功能。
DIY機器學習方法
Python機器學習真正吸引人的一件事是對機器學習庫的某些基本組件進行的自行完成方法。您可以從頭開始創建自己的感知器類,這使您對神經網絡的工作方式有了非常扎實的認識。稍后,您將在感知器的組件上進行構建,以了解其他神經網絡概念,例如隨機梯度下降(SGD),反向傳播和卷積。我看過幾本解釋神經網絡工作原理的書和課程,但這是到目前為止我所見過的最全面,最動手的文字。
您還可以重新創建一些基本的機器學習算法,例如主成分分析(PCA),這可以幫助您更好地掌握算法的每個超參數的效果。您在本書中構建的自定義算法效率不高,僅用于教育目的。然后,Python Machine Learning的作者在Scikit-learn和TensorFlow中介紹了這些算法的等效項。
您將在Python機器學習中找到的另一個很棒的功能是一章,它引導您完成將機器學習算法集成到實際應用程序中的過程。您將創建一個由后端中的機器學習算法支持的Web應用程序。公平地講,該應用程序是粗糙的,但重點是要說明這些不同部分如何組合在一起,并且作者在此方面做得很好。
豐富的機器學習和深度學習算法
在評估機器學習書籍時,要考慮的一件事是您要探索的算法花名冊。在這方面,Python機器學習并不令人失望。它帶您了解基本的有監督和無監督機器學習算法,例如線性和邏輯回歸,支持向量機,決策樹和隨機森林以及k均值聚類。除此之外,它還增加了一些討論較少的算法,例如聚集聚類和DBSCAN。
其中很多可能與您在數據科學和機器學習入門書籍中已經閱讀的內容重疊,但是非常歡迎Python機器學習為每個主題帶來的深度。
Python機器學習還將帶您了解入門書籍中找不到的一些算法和功能,例如使用mlextend可視化不同數據集特征之間的相關性或對回歸模型進行全面評估。
本書的深度學習部分提供了許多有用的理論材料和有關不同類型的神經網絡的動手經驗。您將通過TensorFlow和Keras使用完全連接的,循環的和卷積神經網絡。這本書包含一個完整的部分,直觀地解釋了TensorFlow組件背后的邏輯,該主題通常很難引起您的注意。
與本書的其余部分一樣,深度學習部分也是由示例驅動的。在本書的最后,您將訪問一些高級結構,例如變壓器和生成對抗網絡。關于強化學習,還有一個介紹性的章節,您將在其中使用流行的OpenAI Gym庫。
讓人有些失望的是自然語言處理的RNN部分,其中示例代碼突然結束,而沒有測試模型的部分。
總結思想
與以前的版本一樣,Python機器學習第三版對于那些已經精通機器學習和數據科學基礎知識的開發人員來說是一本很好的書。它不會使您成為準備以六位數的薪水準備就緒的機器學習和深度學習專家,但它無疑將為機器學習的更高級探索奠定基礎。
下一步是什么?根據您感興趣的領域,我建議您選擇一本專門針對計算機視覺,自然語言處理或強化學習的書或課程。