(python)數據挖掘、機器學習演算法學習材料分享

最近在學習機器學習,也是找了各方資料,其質量參差不齊,受之所迫繞了不少彎路,特此撰文以分享優質資料。

本文中所提名的學習資料既含括適合初學者(即使你是連python怎麼寫1+1都不會)入門的,也有適合熟練者查閱的。

一、python編程基礎

SciPy Lecture Notes 中文版

本來是搜scipy文檔,以外地發現了這篇,這篇的特點在於,他表面上是講scipy,實際上是再講如何用python做科學計算,內容橫跨從入門到放棄(後半本本人暫時還用不到)。

把這本放在推薦首位的原因在於,這本的「python語言基礎」部分撰寫得十分聰明,他是官方文檔(python官方文檔)的一個子集,你可以理解成作者在官方給的使用手冊上畫了一個重點出來,就像我們的初高中講師天天給我們做的一樣。

這個重點畫得可謂巧妙,首先他意識到了python作為一門涉獵甚廣的編程語言,其特性眾多,而數據科學並不需要python所有的特效;而後他明確地區分了對一個「數據從業者」來說,python的哪些部分是真正需要的,哪些部分是偽需求。

作者只將數據從業者真正需要的部分寫進了此篇文檔。這避免了初來乍到的哀綠(魔法師學徒)們被「面對對象」、並發、異常、操作系統介面、匿名函數、反射、元編程等不是那麼直觀的概念勸退。

另外這篇文檔的numpy篇章和matplotlib篇章也是濃縮而精華,當做學習資料來用可能有些過於精簡了,但只要你跟著一行一行敲就行了,關鍵是要耐得住性子。當做使用手冊來查閱還是很方便的,ctrlF搜關鍵詞可以很輕鬆地找到需要的語法。

如果你不滿足於做一名數據人士,還打算深入學習python語言,成為一名上手的碼農,那麼可以考慮閱讀python官方文檔,或者購買圖書。

圖書還是推薦偏向於進階的,比如Python Cookbook(第3版)中文版,《Python核心編程(第3版)》([美]Wesley Chun)【摘要 書評 試讀】- 京東圖書,前者重點放在了python標準庫中比較難的部分,後者則把重點放在了python的各路擴展包上。

二、數據挖掘

這部分推薦兩本書,《集體智慧編程》([美]Toby Segaran(托比·西格蘭))【摘要 書評 試讀】- 京東圖書,《寫給程序員的數據挖掘實踐指南》([美],Ron,Zacharski,扎哈爾斯基)【摘要 書評 試讀】- 京東圖書

前者主要是舉例子,講原理,數學推到較少,意在讓讀者搞清楚那些數據挖掘領域的技能名詞都是什麼,以及這些技能為什麼會work,不過讀起來容易困。

後者注重數學原理,從案例出發,深入淺出地掰吃了各種數據挖掘技能的數學原理,講得比較容易理解,只要你用眼睛看,高中數學基礎也能看懂,恩,只要你耐得住性子。催眠效果也不錯。

三、機器學習

推薦《機器學習【首屆京東文學獎-年度新銳入圍作品】》(周志華)【摘要 書評 試讀】- 京東圖書,【機器學習】李宏毅機器學習2017(台灣大學)(國語)_演講?公開課_科技_bilibili_嗶哩嗶哩,【機器學習】 斯坦福大學公開課_演講?公開課_科技_bilibili_嗶哩嗶哩

一開始學機器學習看的是斯坦福的公開課,說實在的不是很看得懂,全程都在板書公式,硬著頭皮看了七八集,感覺看得雲里霧裡,可能是我聽不懂英語的緣故吧,看翻譯畢竟和講師隔著一層。

之後買了周志華的機器學習,這本書前言里寫著「這是一本教科書,適合大四或研究生作為課程教材或自學材料」,不假,我作為一名有一點編程基礎的大四學生,看了這本書能完整地把裡面講的演算法用python手打出來。這本書是少有的講得很全面,還能讓人看懂的。

最後說台灣大學的這個公開課,一進去看見老師拿個口袋妖怪出來舉例子真是驚了,這名講師講課風格幽默,課程內容講得淺顯易懂,聽他的課有一種追劇的感覺。

四、數據挖掘與機器學習實踐工具包

機器學習和數據挖掘並不是互斥的,只是側重點不同,本質上都是科學計算,相關領域除了類似於numpy、scipy的科學計算庫(文檔見上面),還涉及一些機器學習演算法(這顯然是一句廢話,我想表達的意思是數據挖掘往往也要用到機器學習,所以放一起說)。

這裡推薦兩篇文檔scikit-learn: machine learning in Python,Keras中文文檔。

第一篇是scikit-learn的文檔,他的主頁很只管的說明了他的作用↓

這篇文檔的漢化不太全,不過你都學到這裡了估計你的英語水平也差不到哪裡去,up大學修的日語,英語高考60分水平,憑著編程經驗和谷歌翻譯硬著頭皮愣啃也不是啃不動,相信大家能應付起來會輕鬆一些。其實原理都懂的情況下,跟著文檔敲一遍例子,IDE里調試一下看看每個對象的值,如此一來,就算是猜文檔作者的意思也能猜個八九不離十了。

第二篇是keras,一個深度學習的框架,或者說是深度學習框架的前端,他內部調用深度學習的三個框架,Theano或TensorFlow或CNTK,我們可以自選。keras為這兩個框架的介面做了抽象,他好似一針麻藥,減少了我們構建神經網路的痛苦,但他也只是一針麻藥而已,問題本身的複雜度並不會因為一個「前端」而減少,該動的腦子還是要動的。

其實現在深度學習的框架還挺多的,我在知乎和搜索引擎里把我能想到的有關關鍵詞逛了兩圈,就我觀察到的風評來看,TensorFlow是最好的,pyTorch也還行,Theano漸顯頹勢。

五、一些demo

用Python做科學計算 - 用Python做科學計算

這篇文檔沒怎麼看,之前鼓搗音頻與傅里葉變換的時候發現的,後半段有幾個demo,關於python怎麼讀音頻信號,對信號濾波和做傅里葉變換,代碼抄下來調試一遍感覺受益匪淺。

六、其它

推薦一個搜文檔的地方Explore · GitBook,這玩意兒貌似和github是一家子。


推薦閱讀:

【轉】機器學習新手必學十大演算法指南
阿里集團搜索和推薦關於效率&穩定性的思考和實踐
二叉樹中和為某一值的路徑
035 Search Insert Position[E]
演算法圖解

TAG:演算法 | 機器學習 | 數據挖掘 |