Contents
使用 Python 和 Sci-Kit Learn 實現經典機器學習演算法的完整指南
課程介紹影片
從這 6 小時的課程,你會學到
- 理解和以 Python 實現 K 最近鄰(KNN,K-Nearest Neighbors )
- 了解 KNN 的局限性
- 採用 KNN 解決一些二元和多類( multiclass )分類問題
- 理解以 Python 實現 Naive Bayes 和 General Bayes 分類器
- 了解貝葉斯分類器的局限性
- 理解並以 Python 實現決策樹( Decision Tree )
- 理解並以 Python 實現感知器 ( Perceptron )
- 了解感知器( Perceptron )的局限性
- 了解超參數( hyperparameters )以及如何應用交叉驗證( cross-validation )
- 了解特徵提取( feature extraction )和特徵選擇( feature selection )的概念
- 了解經典機器學習方法與深度學習之間的優缺點
- 使用 Sci-Kit Learn
- 實施機器學習 Web 服務
要求
- 具備 Python、Numpy 和 Pandas 經驗
- 機率和統計(高斯分佈)
- 強大的編寫演算法的能力
課程說明
近年來,我們看到 AI ( Artificial Intelligence,人工智慧 )以及機器學習的復甦。
機器學習導致了一些驚人的結果,如能夠分析醫學圖像並預測與人類專家相同的疾病。
Google 的 AlphaGo 計劃能夠通過深度強化學習在戰略遊戲中擊敗世界冠軍。
機器學習甚至被用於自動駕駛汽車的編程,這將永遠改變汽車行業。 想像一下,通過消除人為錯誤的因素,可以大大減少車禍的世界。
Google 有名的宣布,他們現在是“機器學習第一”,這意味著機器學習現在將得到更多的關注,這就是未來幾年將推動創新的原因。 它嵌入到各種不同的產品中。
機器學習在很多行業都有應用,如金融、線上廣告、醫藥和機器人。
這是一個廣泛適用的工具,無論你在哪個行業,都將使你受益匪淺,而且一旦你獲得了良好的發展,它也將為你創造大量的就業機會。
機器學習也引發了一些哲學問題。我們在建造一台可以思考的機器嗎?意識到什麼意味著什麼?有一天計算機會接管世界嗎?
在這個課程中,我們首先討論K-最近鄰( KNN )演算法。它非常簡單直觀,它是一種很好的第一種學習分類演算法。在我們討論概念並在程式碼中實現它之後,我們將看看 KNN 可能會失敗的一些方法。
了解我們所看到的每種演算法的優點和缺點非常重要。
接下來我們將看看樸素貝葉斯分類器( Naive Bayes classifier )和普通貝葉斯分類器( General Bayes classifier )。這是一個非常有趣的演算法,因為它以機率為基礎。
我們將看到如何將貝葉斯分類器轉換為線性和二次( quadratic )分類器來加速我們的計算。
接下來我們來看看著名的決策樹演算法。 這是我們要學習的演算法中最複雜的一部分,你看到的大多數課程都不會實現它們。 我們會這樣做,因為我相信實踐是很好的做法。
我們最後要看的一個演算法是感知器( Perceptron )演算法。 感知器是神經網路和深度學習的祖先,因此它們對於機器學習環境中的研究非常重要。
我們已經研究了這些算法,我們將轉向更實用的機器學習主題。 超參數、交叉驗證、特徵提取、特徵選擇和多類別分類。
我們將與深度學習進行比較,以了解每種方法的優缺點。
我們將討論 Sci-Kit Learn 程式庫( library ),因為即使實現自己的演算法是有趣且富有教育意義的,你應該在實際工作中使用經過優化且經過充分測試的程式碼。
我們將通過編寫運行機器學習模型並進行預測的 Web 服務,以非常實用的現實世界的例子來解決問題。 這是真正於公司實行並從中獲利的服務。
本課程的所有材料都是免費的。 你可以在Windows、Linux 或 Mac 上使用簡單命令下載並安裝Python、Numpy 和 Scipy。
本課程著重於“如何建構和理解”,而不僅僅是“如何使用”。 讀完一些文件後,任何人都可以在 15 分鐘內學會使用 API。 這不是關於“記住事實”,而是關於通過實驗“親眼看到”。 它會教你如何視覺化模型內部發生的事情。 如果你不僅僅需要對機器學習模型進行膚淺的考察,本課程將為你提供幫助。
注意:
所有的課程中的程式碼都可以從我的github下載:
/ lazyprogrammer/ machine_learning_examples
在目錄中:supervised_class
確保你總是用“ git pull ”,如此你總是拿到最新版本!
必要條件 / 假設你已具備以下知識 :
- 微積分
- 機率 (連續與離散分佈機率、聯合機率、邊際機率、條件機率、PDF、PMF、CDF、貝葉斯規則)
- Python 程式設計 : if/else, loops, lists, dicts, sets
- Numpy, Scipy, Matplotlib
提示(通過課程):
- 以 2x 觀看。
- 拿手寫筆記。 這將大大增加你記住訊息的能力。
- 寫下方程。 如果你不這樣做,我保證它看起來像亂碼。
- 在討論板上提出許多問題。 越多越好!
- 意識到大多數練習將需要幾天或幾週才能完成。
- 自己編寫程式碼,不要只是坐在那裡看我寫程式。
修課順序
- 查看講座 “ What order should I take your courses in?” (可在我的任何課程的附錄中找到,或請參考先修課)
目標受眾
- 希望將機器學習技術應用於他們的資料集的學生和專業人員
- 希望將機器學習技術應用於現實世界問題的學生和專業人員
- 任何想學習經典資料科學和機器學習演算法的人
- 任何正在尋找人工智慧(AI)簡介的人
講師簡介
Lazy Programmer Inc 資料科學家和大數據工程師
我是一名資料科學家、大數據工程師和全端軟體工程師。
我有電腦工程的碩士,專長為機器學習和模式辨識。
我曾在網路廣告和數位媒體企業擔任過資料科學家和大數據工程師,圍繞所謂的資料建構各種高流量的 web 服務。我曾經使用 Hadoop / Pig / MapReduce 創建新的大數據管道,也曾建立機器學習模型來預測點擊率,使用線性迴歸、Bayesian Bandits 和協同過濾 ( collaborative filtering )建立新聞推薦系統,並使用A / B測試驗證結果。
我曾在大學部與研究所教授資料科學、統計學、機器學習、演算法、微積分、電腦圖學和物理學,任職的學校如哥倫比亞大學、紐約大學、Hunter 學院和 The New School。
有多家企業已從我的 Web 程式設計專業知識中受益。我做所有的後端(伺服器)、前端(HTML / JS / CSS)和運營/佈署工作。 我使用的技術包含:Python、Ruby / Rails、PHP、Bootstrap、jQuery(Javascript)、Backbone 和 Angular。至於儲存/資料庫,我採用 MySQL、Postgres、Redis、MongoDB等。
英文字幕:有
- 想要了解如何將英文字幕自動翻譯成中文? 請參考這篇 How-To
報名參加課程


你必須登入才能發表留言。