自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

只需十四步:從零開始掌握Python機(jī)器學(xué)習(xí)(附資源)

人工智能 機(jī)器學(xué)習(xí) 開發(fā)工具
Python 可以說(shuō)是現(xiàn)在最流行的機(jī)器學(xué)習(xí)語(yǔ)言,而且你也能在網(wǎng)上找到大量的資源。你現(xiàn)在也在考慮從 Python 入門機(jī)器學(xué)習(xí)嗎?本教程或許能幫你成功上手。

Python 可以說(shuō)是現(xiàn)在最流行的機(jī)器學(xué)習(xí)語(yǔ)言,而且你也能在網(wǎng)上找到大量的資源。你現(xiàn)在也在考慮從 Python 入門機(jī)器學(xué)習(xí)嗎?本教程或許能幫你成功上手,從 0 到 1 掌握 Python 機(jī)器學(xué)習(xí),至于后面再?gòu)?1 到 100 變成機(jī)器學(xué)習(xí)專家,就要看你自己的努力了。

「開始」往往是最難的,尤其是當(dāng)選擇太多的時(shí)候,一個(gè)人往往很難下定決定做出選擇。本教程的目的是幫助幾乎沒(méi)有 Python 機(jī)器學(xué)習(xí)背景的新手成長(zhǎng)為知識(shí)淵博的實(shí)踐者,而且這個(gè)過(guò)程中僅需要使用免費(fèi)的材料和資源即可。這個(gè)大綱的主要目標(biāo)是帶你了解那些數(shù)量繁多的可用資源。毫無(wú)疑問(wèn),資源確實(shí)有很多,但哪些才是最好的呢?哪些是互補(bǔ)的呢?以怎樣的順序?qū)W習(xí)這些資源才是最合適的呢?

首先,我假設(shè)你并不是以下方面的專家:

  • 機(jī)器學(xué)習(xí)
  • Python
  • 任何 Python 的機(jī)器學(xué)習(xí)、科學(xué)計(jì)算或數(shù)據(jù)分析庫(kù)

當(dāng)然,如果你對(duì)前兩個(gè)主題有一定程度的基本了解就更好了,但那并不是必要的,在早期階段多花一點(diǎn)點(diǎn)時(shí)間了解一下就行了。

一、基礎(chǔ)篇

1. 第一步:基本 Python 技能

如果我們打算利用 Python 來(lái)執(zhí)行機(jī)器學(xué)習(xí),那么對(duì) Python 有一些基本的了解就是至關(guān)重要的。幸運(yùn)的是,因?yàn)?Python 是一種得到了廣泛使用的通用編程語(yǔ)言,加上其在科學(xué)計(jì)算和機(jī)器學(xué)習(xí)領(lǐng)域的應(yīng)用,所以找到一個(gè)初學(xué)者教程并不十分困難。你在 Python 和編程上的經(jīng)驗(yàn)水平對(duì)于起步而言是至關(guān)重要的。

首先,你需要安裝 Python。因?yàn)槲覀兒竺鏁?huì)用到科學(xué)計(jì)算和機(jī)器學(xué)習(xí)軟件包,所以我建議你安裝 Anaconda。這是一個(gè)可用于 Linux、OS X 和 Windows 上的工業(yè)級(jí)的 Python 實(shí)現(xiàn),完整包含了機(jī)器學(xué)習(xí)所需的軟件包,包括 numpy、scikit-learn 和 matplotlib。其也包含了 iPython Notebook,這是一個(gè)用在我們?cè)S多教程中的交互式環(huán)境。我推薦安裝 Python 2.7。

如果你不懂編程,我建議你從下面的免費(fèi)在線書籍開始學(xué)習(xí),然后再進(jìn)入后續(xù)的材料:

  • Learn Python the Hard Way,作者 Zed A. Shaw:https://learnpythonthehardway.org/book/

如果你有編程經(jīng)驗(yàn),但不懂 Python 或還很初級(jí),我建議你學(xué)習(xí)下面兩個(gè)課程:

  • 谷歌開發(fā)者 Python 課程(強(qiáng)烈推薦視覺(jué)學(xué)習(xí)者學(xué)習(xí)):http://suo.im/toMzq
  • Python 科學(xué)計(jì)算入門(來(lái)自 UCSB Engineering 的 M. Scott Shell)(一個(gè)不錯(cuò)的入門,大約有 60 頁(yè)):http://suo.im/2cXycM

如果你要 30 分鐘上手 Python 的快速課程,看下面:

  • 在 Y 分鐘內(nèi)學(xué)會(huì) X(X=Python):http://suo.im/zm6qX

當(dāng)然,如果你已經(jīng)是一位經(jīng)驗(yàn)豐富的 Python 程序員了,這一步就可以跳過(guò)了。即便如此,我也建議你常使用 Python 文檔:https://www.python.org/doc/

2. 第二步:機(jī)器學(xué)習(xí)基礎(chǔ)技巧

KDnuggets 的 Zachary Lipton 已經(jīng)指出:現(xiàn)在,人們?cè)u(píng)價(jià)一個(gè)「數(shù)據(jù)科學(xué)家」已經(jīng)有很多不同標(biāo)準(zhǔn)了。這實(shí)際上是機(jī)器學(xué)習(xí)領(lǐng)域領(lǐng)域的一個(gè)寫照,因?yàn)閿?shù)據(jù)科學(xué)家大部分時(shí)間干的事情都牽涉到不同程度地使用機(jī)器學(xué)習(xí)算法。為了有效地創(chuàng)造和獲得來(lái)自支持向量機(jī)的洞見,非常熟悉核方法(kernel methods)是否必要呢?當(dāng)然不是。就像幾乎生活中的所有事情一樣,掌握理論的深度是與實(shí)踐應(yīng)用相關(guān)的。對(duì)機(jī)器學(xué)習(xí)算法的深度了解超過(guò)了本文探討的范圍,它通常需要你將非常大量的時(shí)間投入到更加學(xué)術(shù)的課程中去,或者至少是你自己要進(jìn)行高強(qiáng)度的自學(xué)訓(xùn)練。

好消息是,對(duì)實(shí)踐來(lái)說(shuō),你并不需要獲得機(jī)器學(xué)習(xí)博士般的理論理解——就想要成為一個(gè)高效的程序員并不必要進(jìn)行計(jì)算機(jī)科學(xué)理論的學(xué)習(xí)。

人們對(duì)吳恩達(dá)在 Coursera 上的機(jī)器學(xué)習(xí)課程內(nèi)容往往好評(píng)如潮;然而,我的建議是瀏覽前一個(gè)學(xué)生在線記錄的課堂筆記。跳過(guò)特定于 Octave(一個(gè)類似于 Matlab 的與你 Python 學(xué)習(xí)無(wú)關(guān)的語(yǔ)言)的筆記。一定要明白這些都不是官方筆記,但是可以從它們中把握到吳恩達(dá)課程材料中相關(guān)的內(nèi)容。當(dāng)然如果你有時(shí)間和興趣,你現(xiàn)在就可以去 Coursera 上學(xué)習(xí)吳恩達(dá)的機(jī)器學(xué)習(xí)課程:http://suo.im/2o1uD

  • 吳恩達(dá)課程的非官方筆記:http://www.holehouse.org/mlclass/

除了上面提到的吳恩達(dá)課程,如果你還需要需要其它的,網(wǎng)上還有很多各類課程供你選擇。比如我就很喜歡 Tom Mitchell,這里是他最近演講的視頻(一起的還有 Maria-Florina Balcan),非常平易近人。

  • Tom Mitchell 的機(jī)器學(xué)習(xí)課程:http://suo.im/497arw

目前你不需要所有的筆記和視頻。一個(gè)有效地方法是當(dāng)你覺(jué)得合適時(shí),直接去看下面特定的練習(xí)題,參考上述備注和視頻恰當(dāng)?shù)牟糠郑?/p>

3. 第三步:科學(xué)計(jì)算 Python 軟件包概述

好了,我們已經(jīng)掌握了 Python 編程并對(duì)機(jī)器學(xué)習(xí)有了一定的了解。而在 Python 之外,還有一些常用于執(zhí)行實(shí)際機(jī)器學(xué)習(xí)的開源軟件庫(kù)。廣義上講,有很多所謂的科學(xué) Python 庫(kù)(scientific Python libraries)可用于執(zhí)行基本的機(jī)器學(xué)習(xí)任務(wù)(這方面的判斷肯定有些主觀性):

  • numpy——主要對(duì)其 N 維數(shù)組對(duì)象有用 http://www.numpy.org/
  • pandas——Python 數(shù)據(jù)分析庫(kù),包括數(shù)據(jù)框架(dataframes)等結(jié)構(gòu) http://pandas.pydata.org/
  • matplotlib——一個(gè) 2D 繪圖庫(kù),可產(chǎn)生出版物質(zhì)量的圖表 http://matplotlib.org/
  • scikit-learn——用于數(shù)據(jù)分析和數(shù)據(jù)挖掘人物的機(jī)器學(xué)習(xí)算法 http://scikit-learn.org/stable/

學(xué)習(xí)這些庫(kù)的一個(gè)好方法是學(xué)習(xí)下面的材料:

  • Scipy Lecture Notes,來(lái)自 Gaël Varoquaux、Emmanuelle Gouillart 和 Olav Vahtras:http://www.scipy-lectures.org/
  • 這個(gè) pandas 教程也很不錯(cuò):10 Minutes to Pandas:http://suo.im/4an6gY

在本教程的后面你還會(huì)看到一些其它的軟件包,比如基于 matplotlib 的數(shù)據(jù)可視化庫(kù) Seaborn。前面提到的軟件包只是 Python 機(jī)器學(xué)習(xí)中常用的一些核心庫(kù)的一部分,但是理解它們應(yīng)該能讓你在后面遇到其它軟件包時(shí)不至于感到困惑。

下面就開始動(dòng)手吧!

4. 第四步:使用 Python 學(xué)習(xí)機(jī)器學(xué)習(xí)

首先檢查一下準(zhǔn)備情況

  • Python:就緒
  • 機(jī)器學(xué)習(xí)基本材料:就緒
  • Numpy:就緒
  • Pandas:就緒
  • Matplotlib:就緒

現(xiàn)在是時(shí)候使用 Python 機(jī)器學(xué)習(xí)標(biāo)準(zhǔn)庫(kù) scikit-learn 來(lái)實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法了。

scikit-learn 流程圖

scikit-learn 流程圖

下面許多的教程和訓(xùn)練都是使用 iPython (Jupyter) Notebook 完成的,iPython Notebook 是執(zhí)行 Python 語(yǔ)句的交互式環(huán)境。iPython Notebook 可以很方便地在網(wǎng)上找到或下載到你的本地計(jì)算機(jī)。

  • 來(lái)自斯坦福的 iPython Notebook 概覽:http://cs231n.github.io/ipython-tutorial/

同樣也請(qǐng)注意,以下的教程是由一系列在線資源所組成。如果你感覺(jué)課程有什么不合適的,可以和作者交流。我們第一個(gè)教程就是從 scikit-learn 開始的,我建議你們?cè)诶^續(xù)完成教程前可以按順序看一看以下的文章。

下面是一篇是對(duì) scikit-learn 簡(jiǎn)介的文章,scikit-learn 是 Python 最常用的通用機(jī)器學(xué)習(xí)庫(kù),其覆蓋了 K 近鄰算法:

  • Jake VanderPlas 寫的 scikit-learn 簡(jiǎn)介:http://suo.im/3bMdEd

下面的會(huì)更加深入、擴(kuò)展的一篇簡(jiǎn)介,包括了從著名的數(shù)據(jù)庫(kù)開始完成一個(gè)項(xiàng)目:

  • Randal Olson 的機(jī)器學(xué)習(xí)案例筆記:http://suo.im/RcPR6

下一篇關(guān)注于在 scikit-learn 上評(píng)估不同模型的策略,包括訓(xùn)練集/測(cè)試集的分割方法:

  • Kevin Markham 的模型評(píng)估:http://suo.im/2HIXDD

5. 第五步:Python 上實(shí)現(xiàn)機(jī)器學(xué)習(xí)的基本算法

在有了 scikit-learn 的基本知識(shí)后,我們可以進(jìn)一步探索那些更加通用和實(shí)用的算法。我們從非常出名的 K 均值聚類(k-means clustering)算法開始,它是一種非常簡(jiǎn)單和高效的方法,能很好地解決非監(jiān)督學(xué)習(xí)問(wèn)題:

  • K-均值聚類:http://suo.im/40R8zf

接下來(lái)我們可以回到分類問(wèn)題,并學(xué)習(xí)曾經(jīng)最流行的分類算法:

  • 決策樹:http://thegrimmscientist.com/tutorial-decision-trees/

在了解分類問(wèn)題后,我們可以繼續(xù)看看連續(xù)型數(shù)值預(yù)測(cè):

  • 線性回歸:http://suo.im/3EV4Qn

我們也可以利用回歸的思想應(yīng)用到分類問(wèn)題中,即 logistic 回歸:

  • logistic 回歸:http://suo.im/S2beL

6. 第六步:Python 上實(shí)現(xiàn)進(jìn)階機(jī)器學(xué)習(xí)算法

我們已經(jīng)熟悉了 scikit-learn,現(xiàn)在我們可以了解一下更高級(jí)的算法了。首先就是支持向量機(jī),它是一種依賴于將數(shù)據(jù)轉(zhuǎn)換映射到高維空間的非線性分類器。

  • 支持向量機(jī):http://suo.im/2iZLLa

隨后,我們可以通過(guò) Kaggle Titanic 競(jìng)賽檢查學(xué)習(xí)作為集成分類器的隨機(jī)森林:

  • Kaggle Titanic 競(jìng)賽(使用隨機(jī)森林):http://suo.im/1o7ofe

降維算法經(jīng)常用于減少在問(wèn)題中所使用的變量。主成份分析法就是非監(jiān)督降維算法的一個(gè)特殊形式:

  • 降維算法:http://suo.im/2k5y2E

在進(jìn)入第七步之前,我們可以花一點(diǎn)時(shí)間考慮在相對(duì)較短的時(shí)間內(nèi)取得的一些進(jìn)展。

首先使用 Python 及其機(jī)器學(xué)習(xí)庫(kù),我們不僅已經(jīng)了解了一些最常見和知名的機(jī)器學(xué)習(xí)算法(k 近鄰、k 均值聚類、支持向量機(jī)等),還研究了強(qiáng)大的集成技術(shù)(隨機(jī)森林)和一些額外的機(jī)器學(xué)習(xí)任務(wù)(降維算法和模型驗(yàn)證技術(shù))。除了一些基本的機(jī)器學(xué)習(xí)技巧,我們已經(jīng)開始尋找一些有用的工具包。

我們會(huì)進(jìn)一步學(xué)習(xí)新的必要工具。

7. 第七步:Python 深度學(xué)習(xí)

神經(jīng)網(wǎng)絡(luò)包含很多層

神經(jīng)網(wǎng)絡(luò)包含很多層

深度學(xué)習(xí)無(wú)處不在。深度學(xué)習(xí)建立在幾十年前的神經(jīng)網(wǎng)絡(luò)的基礎(chǔ)上,但是最近的進(jìn)步始于幾年前,并極大地提高了深度神經(jīng)網(wǎng)絡(luò)的認(rèn)知能力,引起了人們的廣泛興趣。如果你對(duì)神經(jīng)網(wǎng)絡(luò)還不熟悉,KDnuggets 有很多文章詳細(xì)介紹了最近深度學(xué)習(xí)大量的創(chuàng)新、成就和贊許。

最后一步并不打算把所有類型的深度學(xué)習(xí)評(píng)論一遍,而是在 2 個(gè)先進(jìn)的當(dāng)代 Python 深度學(xué)習(xí)庫(kù)中探究幾個(gè)簡(jiǎn)單的網(wǎng)絡(luò)實(shí)現(xiàn)。對(duì)于有興趣深挖深度學(xué)習(xí)的讀者,我建議從下面這些免費(fèi)的在線書籍開始:

神經(jīng)網(wǎng)絡(luò)與深度學(xué)習(xí),作者 Michael Nielsen:http://neuralnetworksanddeeplearning.com/

(1)Theano

鏈接:http://deeplearning.net/software/theano/

Theano 是我們講到的第一個(gè) Python 深度學(xué)習(xí)庫(kù)。看看 Theano 作者怎么說(shuō):

Theano 是一個(gè) Python 庫(kù),它可以使你有效地定義、優(yōu)化和評(píng)估包含多維數(shù)組的數(shù)學(xué)表達(dá)式。

下面關(guān)于運(yùn)用 Theano 學(xué)習(xí)深度學(xué)習(xí)的入門教程有點(diǎn)長(zhǎng),但是足夠好,描述生動(dòng),評(píng)價(jià)很高:

  • Theano 深度學(xué)習(xí)教程,作者 Colin Raffel:http://suo.im/1mPGHe

(2)Caffe

鏈接:http://caffe.berkeleyvision.org/

另一個(gè)我們將測(cè)試驅(qū)動(dòng)的庫(kù)是 Caffe。再一次,讓我們從作者開始:

Caffe 是一個(gè)深度學(xué)習(xí)框架,由表達(dá)、速度和模塊性建構(gòu),Bwekeley 視覺(jué)與學(xué)習(xí)中心和社區(qū)工作者共同開發(fā)了 Caf fe。

這個(gè)教程是本篇文章中最好的一個(gè)。我們已經(jīng)學(xué)習(xí)了上面幾個(gè)有趣的樣例,但沒(méi)有一個(gè)可與下面這個(gè)樣例相競(jìng)爭(zhēng),其可通過(guò) Caffe 實(shí)現(xiàn)谷歌的 DeepDream。這個(gè)相當(dāng)精彩!掌握教程之后,可以嘗試使你的處理器自如運(yùn)行,就當(dāng)作是娛樂(lè)。

  • 通過(guò) Caffe 實(shí)現(xiàn)谷歌 DeepDream:http://suo.im/2cUSXS

我并沒(méi)有保證說(shuō)這會(huì)很快或容易,但是如果你投入了時(shí)間并完成了上面的 7 個(gè)步驟,你將在理解大量機(jī)器學(xué)習(xí)算法以及通過(guò)流行的庫(kù)(包括一些在目前深度學(xué)習(xí)研究領(lǐng)域最前沿的庫(kù))在 Python 中實(shí)現(xiàn)算法方面變得很擅長(zhǎng)。

二、進(jìn)階篇

機(jī)器學(xué)習(xí)算法

機(jī)器學(xué)習(xí)算法

本篇是使用 Python 掌握機(jī)器學(xué)習(xí)的 7 個(gè)步驟系列文章的下篇,如果你已經(jīng)學(xué)習(xí)了該系列的上篇,那么應(yīng)該達(dá)到了令人滿意的學(xué)習(xí)速度和熟練技能;如果沒(méi)有的話,你也許應(yīng)該回顧一下上篇,具體花費(fèi)多少時(shí)間,取決于你當(dāng)前的理解水平。我保證這樣做是值得的??焖倩仡欀螅酒恼聲?huì)更明確地集中于幾個(gè)機(jī)器學(xué)習(xí)相關(guān)的任務(wù)集上。由于安全地跳過(guò)了一些基礎(chǔ)模塊——Python 基礎(chǔ)、機(jī)器學(xué)習(xí)基礎(chǔ)等等——我們可以直接進(jìn)入到不同的機(jī)器學(xué)習(xí)算法之中。這次我們可以根據(jù)功能更好地分類教程。

第1步:機(jī)器學(xué)習(xí)基礎(chǔ)回顧&一個(gè)新視角

上篇中包括以下幾步:

1. Python 基礎(chǔ)技能

2. 機(jī)器學(xué)習(xí)基礎(chǔ)技能

3. Python 包概述

4. 運(yùn)用 Python 開始機(jī)器學(xué)習(xí):介紹&模型評(píng)估

5. 關(guān)于 Python 的機(jī)器學(xué)習(xí)主題:k-均值聚類、決策樹、線性回歸&邏輯回歸

6. 關(guān)于 Python 的高階機(jī)器學(xué)習(xí)主題:支持向量機(jī)、隨機(jī)森林、PCA 降維

7. Python 中的深度學(xué)習(xí)

如上所述,如果你正準(zhǔn)備從頭開始,我建議你按順序讀完上篇。我也會(huì)列出所有適合新手的入門材料,安裝說(shuō)明包含在上篇文章中。

然而,如果你已經(jīng)讀過(guò),我會(huì)從下面最基礎(chǔ)的開始:

  • 機(jī)器學(xué)習(xí)關(guān)鍵術(shù)語(yǔ)解釋,作者 Matthew Mayo。地址:http://suo.im/2URQGm
  • 維基百科條目:統(tǒng)計(jì)學(xué)分類。地址:http://suo.im/mquen
  • 機(jī)器學(xué)習(xí):一個(gè)完整而詳細(xì)的概述,作者 Alex Castrounis。地址:http://suo.im/1yjSSq

如果你正在尋找學(xué)習(xí)機(jī)器學(xué)習(xí)基礎(chǔ)的替代或補(bǔ)充性方法,恰好我可以把正在看的 Shai Ben-David 的視頻講座和 Shai Shalev-Shwartz 的教科書推薦給你:

  • Shai Ben-David 的機(jī)器學(xué)習(xí)介紹視頻講座,滑鐵盧大學(xué)。地址:http://suo.im/1TFlK6
  • 理解機(jī)器學(xué)習(xí):從理論到算法,作者 Shai Ben-David & Shai Shalev-Shwartz。地址:http://suo.im/1NL0ix

記住,這些介紹性資料并不需要全部看完才能開始我寫的系列文章。視頻講座、教科書及其他資源可在以下情況查閱:當(dāng)使用機(jī)器學(xué)習(xí)算法實(shí)現(xiàn)模型時(shí)或者當(dāng)合適的概念被實(shí)際應(yīng)用在后續(xù)步驟之中時(shí)。具體情況自己判斷。

第2步:更多的分類

我們從新材料開始,首先鞏固一下我們的分類技術(shù)并引入一些額外的算法。雖然本篇文章的第一部分涵蓋決策樹、支持向量機(jī)、邏輯回歸以及合成分類隨機(jī)森林,我們還是會(huì)添加 k-最近鄰、樸素貝葉斯分類器和多層感知器。

Scikit-learn 分類器

Scikit-learn 分類器

k-最近鄰(kNN)是一個(gè)簡(jiǎn)單分類器和懶惰學(xué)習(xí)者的示例,其中所有計(jì)算都發(fā)生在分類時(shí)間上(而不是提前在訓(xùn)練步驟期間發(fā)生)。kNN 是非參數(shù)的,通過(guò)比較數(shù)據(jù)實(shí)例和 k 最近實(shí)例來(lái)決定如何分類。

  • 使用 Python 進(jìn)行 k-最近鄰分類。地址:http://suo.im/2zqW0t

樸素貝葉斯是基于貝葉斯定理的分類器。它假定特征之間存在獨(dú)立性,并且一個(gè)類中任何特定特征的存在與任何其它特征在同一類中的存在無(wú)關(guān)。

  • 使用 Scikit-learn 進(jìn)行文檔分類,作者 Zac Stewart。地址:http://suo.im/2uwBm3

多層感知器(MLP)是一個(gè)簡(jiǎn)單的前饋神經(jīng)網(wǎng)絡(luò),由多層節(jié)點(diǎn)組成,其中每個(gè)層與隨后的層完全連接。多層感知器在 Scikit-learn 版本 0.18 中作了介紹。

首先從 Scikit-learn 文檔中閱讀 MLP 分類器的概述,然后使用教程練習(xí)實(shí)現(xiàn)。

  • 神經(jīng)網(wǎng)絡(luò)模型(監(jiān)督式),Scikit-learn 文檔。地址:http://suo.im/3oR76l
  • Python 和 Scikit-learn 的神經(jīng)網(wǎng)絡(luò)初學(xué)者指南 0.18!作者 Jose Portilla。地址:http://suo.im/2tX6rG

第3步:更多聚類

我們現(xiàn)在接著講聚類,一種無(wú)監(jiān)督學(xué)習(xí)形式。上篇中,我們討論了 k-means 算法; 我們?cè)诖私榻B DBSCAN 和期望最大化(EM)。

Scikit-learn聚類算法

Scikit-learn聚類算法

首先,閱讀這些介紹性文章; 第一個(gè)是 k 均值和 EM 聚類技術(shù)的快速比較,是對(duì)新聚類形式的一個(gè)很好的繼續(xù),第二個(gè)是對(duì) Scikit-learn 中可用的聚類技術(shù)的概述:

  • 聚類技術(shù)比較:簡(jiǎn)明技術(shù)概述,作者 Matthew Mayo。地址:http://suo.im/4ctIvI
  • 在玩具數(shù)據(jù)集中比較不同的聚類算法,Scikit-learn 文檔。地址:http://suo.im/4uvbbM

期望最大化(EM)是概率聚類算法,并因此涉及確定實(shí)例屬于特定聚類的概率。EM 接近統(tǒng)計(jì)模型中參數(shù)的最大似然性或最大后驗(yàn)估計(jì)(Han、Kamber 和 Pei)。EM 過(guò)程從一組參數(shù)開始迭代直到相對(duì)于 k 聚類的聚類最大化。

首先閱讀關(guān)于 EM 算法的教程。接下來(lái),看看相關(guān)的 Scikit-learn 文檔。最后,按照教程使用 Python 自己實(shí)現(xiàn) EM 聚類。

  • 期望最大化(EM)算法教程,作者 Elena Sharova。地址:http://suo.im/33ukYd
  • 高斯混合模型,Scikit-learn 文檔。地址:http://suo.im/20C2tZ。
  • 使用 Python 構(gòu)建高斯混合模型的快速介紹,作者 Tiago Ramalho。地址:http://suo.im/4oxFsj

如果高斯混合模型初看起來(lái)令人困惑,那么來(lái)自 Scikit-learn 文檔的這一相關(guān)部分應(yīng)該可以減輕任何多余的擔(dān)心:

高斯混合對(duì)象實(shí)現(xiàn)期望最大化(EM)算法以擬合高斯模型混合。

基于密度且具有噪聲的空間聚類應(yīng)用(DBSCAN)通過(guò)將密集數(shù)據(jù)點(diǎn)分組在一起,并將低密度數(shù)據(jù)點(diǎn)指定為異常值來(lái)進(jìn)行操作。

首先從 Scikit-learn 的文檔中閱讀并遵循 DBSCAN 的示例實(shí)現(xiàn),然后按照簡(jiǎn)明的教程學(xué)習(xí):

  • DBSCAN 聚類算法演示,Scikit-learn 文檔。地址:http://suo.im/1l9tvX
  • 基于密度的聚類算法(DBSCAN)和實(shí)現(xiàn)。地址:http://suo.im/1LEoXC

第4步:更多的集成方法

上篇只涉及一個(gè)單一的集成方法:隨機(jī)森林(RF)。RF 作為一個(gè)頂級(jí)的分類器,在過(guò)去幾年中取得了巨大的成功,但它肯定不是唯一的集成分類器。我們將看看包裝、提升和投票。

給我一個(gè)提升

給我一個(gè)提升

首先,閱讀這些集成學(xué)習(xí)器的概述,第一個(gè)是通用性的;第二個(gè)是它們與 Scikit-learn 有關(guān):

  • 集成學(xué)習(xí)器介紹,作者 Matthew Mayo。地址:http://suo.im/cLESw
  • Scikit-learn 中的集成方法,Scikit-learn 文檔。地址:http://suo.im/yFuY9

然后,在繼續(xù)使用新的集成方法之前,請(qǐng)通過(guò)一個(gè)新的教程快速學(xué)習(xí)隨機(jī)森林:

  • Python 中的隨機(jī)森林,來(lái)自 Yhat。地址:http://suo.im/2eujI

包裝、提升和投票都是不同形式的集成分類器,全部涉及建構(gòu)多個(gè)模型; 然而,這些模型由什么算法構(gòu)建,模型使用的數(shù)據(jù),以及結(jié)果如何最終組合起來(lái),這些都會(huì)隨著方案而變化。

  • 包裝:從同一分類算法構(gòu)建多個(gè)模型,同時(shí)使用來(lái)自訓(xùn)練集的不同(獨(dú)立)數(shù)據(jù)樣本——Scikit-learn 實(shí)現(xiàn)包裝分類器
  • 提升:從同一分類算法構(gòu)建多個(gè)模型,一個(gè)接一個(gè)地鏈接模型,以提高每個(gè)后續(xù)模型的學(xué)習(xí)——Scikit-learn 實(shí)現(xiàn) AdaBoost
  • 投票:構(gòu)建來(lái)自不同分類算法的多個(gè)模型,并且使用標(biāo)準(zhǔn)來(lái)確定模型如何最好地組合——Scikit-learn 實(shí)現(xiàn)投票分類器

那么,為什么要組合模型?為了從一個(gè)特定角度處理這個(gè)問(wèn)題,這里是偏差-方差權(quán)衡的概述,具體涉及到提升,以下是 Scikit-learn 文檔:

  • 單一評(píng)估器 vs 包裝:偏差-方差分解,Scikit-learn 文檔。地址:http://suo.im/3izlRB

現(xiàn)在你已經(jīng)閱讀了關(guān)于集成學(xué)習(xí)器的一些介紹性材料,并且對(duì)幾個(gè)特定的集成分類器有了基本了解,下面介紹如何從 Machine Learning Mastery 中使用 Scikit-learn 在 Python 中實(shí)現(xiàn)集成分類器:

  • 使用 Scikit-learn 在 Python 中實(shí)現(xiàn)集成機(jī)器學(xué)習(xí)算法,作者 Jason Brownlee。地址:http://suo.im/9WEAr

第5步:梯度提升

下一步我們繼續(xù)學(xué)習(xí)集成分類器,探討一個(gè)當(dāng)代最流行的機(jī)器學(xué)習(xí)算法。梯度提升最近在機(jī)器學(xué)習(xí)中產(chǎn)生了顯著的影響,成為了 Kaggle 競(jìng)賽中最受歡迎和成功的算法之一。

給我一個(gè)梯度提升

給我一個(gè)梯度提升

首先,閱讀梯度提升的概述:

  • 維基百科條目:梯度提升。地址:http://suo.im/TslWi

接下來(lái),了解為什么梯度提升是 Kaggle 競(jìng)賽中「最制勝」的方法:

  • 為什么梯度提升完美解決了諸多 Kaggle 難題?Quora,地址:http://suo.im/3rS6ZO
  • Kaggle 大師解釋什么是梯度提升,作者 Ben Gorman。地址:http://suo.im/3nXlWR

雖然 Scikit-learn 有自己的梯度提升實(shí)現(xiàn),我們將稍作改變,使用 XGBoost 庫(kù),我們提到過(guò)這是一個(gè)更快的實(shí)現(xiàn)。

以下鏈接提供了 XGBoost 庫(kù)的一些額外信息,以及梯度提升(出于必要):

  • 維基百科條目:XGBoost。地址:http://suo.im/2UlJ3V
  • Ghub 上的 XGBoost 庫(kù)。地址:http://suo.im/2JeQI8
  • XGBoost 文檔。地址:http://suo.im/QRRrm

現(xiàn)在,按照這個(gè)教程把所有匯聚起來(lái):

  • Python 中 XGBoost 梯度提升樹的實(shí)現(xiàn)指南,作者 Jesse Steinweg-Woods。地址:http://suo.im/4FTqD5

你還可以按照這些更簡(jiǎn)潔的示例進(jìn)行強(qiáng)化:

  • XGBoost 在 Kaggle 上的示例(Python)。地址:http://suo.im/4F9A1J
  • Iris 數(shù)據(jù)集和 XGBoost 簡(jiǎn)單教程,作者 Ieva Zarina。地址:http://suo.im/2Lyb1a

第6步:更多的降維

降維是通過(guò)使用過(guò)程來(lái)獲得一組主變量,將用于模型構(gòu)建的變量從其初始數(shù)減少到一個(gè)減少數(shù)。

有兩種主要形式的降維:

  • 1. 特征選擇——選擇相關(guān)特征的子集。地址:http://suo.im/4wlkrj
  • 2. 特征提取——構(gòu)建一個(gè)信息性和非冗余的衍生值特征集。地址:http://suo.im/3Gf0Yw

下面是一對(duì)常用的特征提取方法。

一對(duì)常用的特征提取方法

主成分分析(PCA)是一種統(tǒng)計(jì)步驟,它使用正交變換將可能相關(guān)變量的一組觀測(cè)值轉(zhuǎn)換為一組稱為主成分的線性不相關(guān)變量值。主成分的數(shù)量小于或等于原始變量的數(shù)量。這種變換以這樣的方式定義,即第一主成分具有最大可能的方差(即考慮數(shù)據(jù)中盡可能多的變率)

以上定義來(lái)自 PCA 維基百科條目,如果感興趣可進(jìn)一步閱讀。但是,下面的概述/教程非常徹底:

  • 主成分分析:3 個(gè)簡(jiǎn)單的步驟,作者 Sebastian Raschka。地址:http://suo.im/1ahFdW
線性判別分析(LDA)是 Fisher 線性判別的泛化,是統(tǒng)計(jì)學(xué)、模式識(shí)別和機(jī)器學(xué)習(xí)中使用的一種方法,用于發(fā)現(xiàn)線性組合特征或分離兩個(gè)或多個(gè)類別的對(duì)象或事件的特征。所得到的組合可以用作線性分類器,或者更常見地,用作后續(xù)分類之前的降維。

LDA 與方差分析(ANOVA)和回歸分析密切相關(guān),它同樣嘗試將一個(gè)因變量表示為其他特征或測(cè)量的線性組合。然而,ANOVA 使用分類獨(dú)立變量和連續(xù)因變量,而判別分析具有連續(xù)的獨(dú)立變量和分類依賴變量(即類標(biāo)簽)。

上面的定義也來(lái)自維基百科。下面是完整的閱讀:

  • 線性判別分析——直至比特,作者 Sebastian Raschka。地址:http://suo.im/gyDOb

你對(duì) PCA 和 LDA 對(duì)于降維的實(shí)際差異是否感到困惑?Sebastian Raschka 做了如下澄清:

線性判別分析(LDA)和主成分分析(PCA)都是通常用于降維的線性轉(zhuǎn)換技術(shù)。PCA 可以被描述為「無(wú)監(jiān)督」算法,因?yàn)樗负雎浴诡悩?biāo)簽,并且其目標(biāo)是找到使數(shù)據(jù)集中的方差最大化的方向(所謂的主成分)。與 PCA 相反,LDA 是「監(jiān)督的」并且計(jì)算表示使多個(gè)類之間的間隔最大化的軸的方向(「線性判別式」)。

有關(guān)這方面的簡(jiǎn)要說(shuō)明,請(qǐng)閱讀以下內(nèi)容:

  • LDA 和 PCA 之間的降維有什么區(qū)別?作者 Sebastian Raschka。地址:http://suo.im/2IPt0U

第 7 步:更多的深度學(xué)習(xí)

上篇中提供了一個(gè)學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)的入口。如果你的學(xué)習(xí)到目前比較順利并希望鞏固對(duì)神經(jīng)網(wǎng)絡(luò)的理解,并練習(xí)實(shí)現(xiàn)幾個(gè)常見的神經(jīng)網(wǎng)絡(luò)模型,那么請(qǐng)繼續(xù)往下看。

神經(jīng)網(wǎng)絡(luò)模型

首先,看一些深度學(xué)習(xí)基礎(chǔ)材料:

  • 深度學(xué)習(xí)關(guān)鍵術(shù)語(yǔ)及解釋,作者 Matthew Mayo
  • 理解深度學(xué)習(xí)的 7 個(gè)步驟,作者 Matthew Mayo。地址:http://suo.im/3QmEfV

接下來(lái),在 Google 的機(jī)器智能開源軟件庫(kù) TensorFlow(一個(gè)有效的深度學(xué)習(xí)框架和現(xiàn)今幾乎是最好的神經(jīng)網(wǎng)絡(luò)工具)嘗試一些簡(jiǎn)明的概述/教程:

最后,直接從 TensorFlow 網(wǎng)站試用這些教程,它實(shí)現(xiàn)了一些最流行和常見的神經(jīng)網(wǎng)絡(luò)模型:

  • 循環(huán)神經(jīng)網(wǎng)絡(luò),谷歌 TensorFlow 教程。地址:http://suo.im/2gtkze
  • 卷積神經(jīng)網(wǎng)絡(luò),谷歌 TensorFlow 教程。地址:http://suo.im/g8Lbg

此外,目前一篇關(guān)于 7 個(gè)步驟掌握深度學(xué)習(xí)的文章正在寫作之中,重點(diǎn)介紹使用位于 TensorFlow 頂部的高級(jí) API,以增模型實(shí)現(xiàn)的容易性和靈活性。我也將在完成后在這兒添加一個(gè)鏈接。

相關(guān)的:

  • 進(jìn)入機(jī)器學(xué)習(xí)行業(yè)之前應(yīng)該閱讀的 5 本電子書。地址:http://suo.im/SlZKt
  • 理解深度學(xué)習(xí)的 7 個(gè)步驟。地址:http://suo.im/3QmEfV
  • 機(jī)器學(xué)習(xí)關(guān)鍵術(shù)語(yǔ)及解釋。地址:http://suo.im/2URQGm

本教程原文分為兩個(gè)部分,本文中將其進(jìn)行了整合,原文可參閱:http://suo.im/KUWgl 和 http://suo.im/96wD3。本教程的作者為 KDnuggets 副主編兼數(shù)據(jù)科學(xué)家 Matthew Mayo。

【本文是51CTO專欄機(jī)構(gòu)機(jī)器之心的原創(chuàng)譯文,微信公眾號(hào)“機(jī)器之心( id: almosthuman2014)”】

戳這里,看該作者更多好文

責(zé)任編輯:趙寧寧 來(lái)源: 51CTO專欄
相關(guān)推薦

2024-12-06 17:02:26

2024-12-09 09:44:34

機(jī)器學(xué)習(xí)模型分類器

2018-05-09 20:08:09

人工智能深度學(xué)習(xí)Python

2011-04-06 15:55:50

開發(fā)webOS程序webOS

2020-10-05 22:30:42

機(jī)器學(xué)習(xí)人工智能計(jì)算機(jī)

2018-11-27 11:58:34

Python人臉識(shí)別編程語(yǔ)言

2018-08-20 08:15:50

編程語(yǔ)言Go語(yǔ)言切片

2011-05-24 13:37:16

jQueryAjax

2015-09-18 10:09:05

Swift

2024-10-22 10:23:58

2011-09-05 14:17:54

Sencha ToucMVC

2014-07-22 13:09:21

android

2023-03-21 07:35:43

2023-11-16 08:53:05

NumPy庫(kù)Python

2020-07-02 15:32:23

Kubernetes容器架構(gòu)

2023-11-09 23:45:01

Pytorch目標(biāo)檢測(cè)

2010-06-12 13:49:16

學(xué)習(xí)UML

2015-11-17 16:11:07

Code Review

2018-04-18 07:01:59

Docker容器虛擬機(jī)

2019-01-18 12:39:45

云計(jì)算PaaS公有云
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)