Python8種最常見火爆的機(jī)器學(xué)習(xí)算法

毋庸置疑,近來機(jī)器學(xué)習(xí)人氣日益高漲,逐漸在流行詞榜單上占據(jù)一席之地。機(jī)器學(xué)習(xí)算法繁多,到底該選擇哪一種處理相關(guān)數(shù)據(jù)是困擾很多學(xué)習(xí)者的問題。本文將以一種清晰簡明的方式,解釋并實(shí)踐最常見的幾種機(jī)器學(xué)習(xí)算法。

接下來,我們將羅列8種最常見火爆的機(jī)器學(xué)習(xí)算法,通過Python,將它們分別適用同一個(gè)經(jīng)典數(shù)據(jù)集Iris(線性回歸和邏輯回歸除外),進(jìn)而分辨出不同算法在預(yù)測準(zhǔn)確率、模型建立過程、對(duì)數(shù)據(jù)集的使用方式等方向的異同。

推薦下我自己創(chuàng)建的Python學(xué)習(xí)交流群960410445,這是Python學(xué)習(xí)交流的地方,不管你是小白還是大牛,小編都?xì)g迎,不定期分享干貨,包括我整理的一份適合零基礎(chǔ)學(xué)習(xí)Python的資料和入門教程。

8大算法

本文中將覆蓋共8種不同的機(jī)器學(xué)習(xí)算法(后續(xù)會(huì)有更多)。閱讀時(shí)本指南時(shí),你可以自由的隨意翻翻或跳過任何一個(gè)已經(jīng)熟悉的算法。請(qǐng)根據(jù)著個(gè)人需求使用這份指南。閑話少說,本文將分為以下及部分。

1.線性回歸

2.邏輯回歸

3.決策樹

4.支持向量機(jī)

5.KNN 臨近算法

6.隨機(jī)森林

7. K-Means聚類

8.主成分分析

若嘗試使用他人的代碼時(shí),結(jié)果你發(fā)現(xiàn)需要三個(gè)新的模塊包而且本代碼是用舊版本的語言寫出的,這將讓人感到無比沮喪。為了大家更加方便,我將使用Python3.5.2并會(huì)在下方列出了我在做這些練習(xí)前加載的模塊包。我也從UCI機(jī)器學(xué)習(xí)庫中下載了Diabetes和Iris數(shù)據(jù)集作為樣本數(shù)據(jù)。

如果你希望跳過這些內(nèi)容,僅想看看全部代碼,你可以直接前往Github上查看。

線性回歸

講解

線性回歸應(yīng)該是機(jī)器學(xué)習(xí)原理中最流行也是最不受重視的算法了。在比較模型表現(xiàn)時(shí),許多數(shù)據(jù)科學(xué)家總是會(huì)忽略這一事實(shí),即比起復(fù)雜更應(yīng)該選擇簡單的方法。

總之,線性回歸是一種基于連續(xù)型變量進(jìn)行預(yù)測的有監(jiān)督學(xué)習(xí)算法。線性回歸適用范圍廣泛,它既能對(duì)單一變量做回歸(簡單線性回歸)也可以對(duì)多維特征做回歸(多元線性回歸)。他的工作原理是,對(duì)變量分配最佳權(quán)重以產(chǎn)生的一條直線(ax+b)用于預(yù)測結(jié)果。請(qǐng)查看以下視頻了解更多詳盡內(nèi)容。

現(xiàn)在你應(yīng)該已經(jīng)掌握了線性回歸的概念,接下來讓我們看看怎樣在Python中實(shí)現(xiàn)它。

準(zhǔn)備工作

可視化

實(shí)現(xiàn)

邏輯回歸

講解

邏輯回歸是有監(jiān)督分類算法的一種,對(duì)預(yù)測離散變量非常有效。一種典型的用法是用邏輯回歸方程預(yù)測事件在0到1之間發(fā)生的概率。

當(dāng)我第一次學(xué)習(xí)邏輯回歸時(shí),以為是這只是一個(gè)小眾工具,并沒有引起十分的注意。后來我才發(fā)現(xiàn),這種想法真是大錯(cuò)特錯(cuò)。邏輯回歸的一些潛在概念在機(jī)器學(xué)習(xí)其他算法例如神經(jīng)網(wǎng)絡(luò)中也有用到。請(qǐng)大家牢記這一點(diǎn),然后查看下面的視頻了解更多內(nèi)容。

現(xiàn)在你已經(jīng)掌握了邏輯回歸的一些概念,讓我們?cè)赑ython中加以實(shí)現(xiàn)。

準(zhǔn)備工作

可視化

實(shí)現(xiàn)

決策樹

講解

決策樹也是有監(jiān)督學(xué)習(xí)的一種,即可用于分類也可用于回歸。在我的經(jīng)驗(yàn)里,他們主要用于分類。模型先接受輸入的一種情況,然后沿著樹枝向下走,依據(jù)設(shè)計(jì)的條件檢測重要變量。根據(jù)結(jié)果,選擇繼續(xù)往左邊的子枝走還是往右邊的子枝走,如此重復(fù)。一般整個(gè)過程中,最重要的特征會(huì)更靠近樹的根部。

決策樹正變得越來越受歡迎,而且任何項(xiàng)目的數(shù)據(jù)科學(xué)家都能用它作為一種強(qiáng)分類算法,尤其與隨機(jī)是森林,Boosting 算法和Bagging 算法一起使用時(shí)。再一次,使用下方的視頻更深入了解決策樹的基礎(chǔ)功能。

現(xiàn)在你知道決策樹以及它怎樣運(yùn)作了,讓我們?nèi)ython中實(shí)踐一下。

準(zhǔn)備工作

實(shí)現(xiàn)

可視化

?支持向量機(jī)

講解

支持向量機(jī),又稱SVM,是一種通過在不同類別的數(shù)據(jù)間生成一條分界線實(shí)現(xiàn)分類的知名的有監(jiān)督分類算法。簡單來說,通過計(jì)算最優(yōu)分割平面,使得屬于兩個(gè)不同類的數(shù)據(jù)點(diǎn)間隔最大,從而得到分類向量。

分類向量一般被默認(rèn)或被視為線性,然而不一定非要這樣。如果核函數(shù)不是默認(rèn)的高斯函數(shù)或線性函數(shù),分類向量也可以是非線性的形式。關(guān)于SVM還有很多可以介紹,請(qǐng)繼續(xù)觀看指導(dǎo)視頻。(后臺(tái)回復(fù) “代碼”2字獲取相關(guān)資源。)

現(xiàn)在你已經(jīng)了解支持向量機(jī)了,讓我們?cè)赑ython中一起實(shí)踐一下。

準(zhǔn)備工作

實(shí)現(xiàn)


可視化

KNN鄰近算法

講解

K最鄰近分類算法,或縮寫為KNN,是一種有監(jiān)督學(xué)習(xí)算法,專門用于分類。算法先關(guān)注不同類的中心,對(duì)比樣本和類中心的距離(通常用歐幾里得距離方程)。如果一個(gè)樣本中的大多數(shù)屬于某一個(gè)類別,則該樣本都?xì)w屬于這個(gè)類別。

你已經(jīng)了解了KNN算法的內(nèi)在概念,讓我們?cè)赑ython中實(shí)踐一下。

準(zhǔn)備工作

可視化

實(shí)現(xiàn)

?隨機(jī)森林

講解

隨機(jī)森林是一種流行的有監(jiān)督集成學(xué)習(xí)算法。集成的意思是把許多”弱學(xué)習(xí)器”結(jié)合在一起,形成一個(gè)強(qiáng)預(yù)測器。在本例中,每一個(gè)隨機(jī)生成的決策樹都是一個(gè)弱學(xué)習(xí)器,放在一起成為了一個(gè)強(qiáng)預(yù)測器—隨機(jī)森林。后臺(tái)獲取相關(guān)視頻,介紹更多隨機(jī)森林背后的原理。

知道了隨機(jī)森林的運(yùn)作原理,到了在Python中實(shí)踐的時(shí)間了。

準(zhǔn)備工作

from sklearn.ensemble import RandomForestClassifier

df = pd.read_csv(‘iris_df.csv’)

df.columns = [‘X1’, ‘X2’, ‘X3’, ‘X4’, ‘Y’]

?df.head()

實(shí)現(xiàn)

from sklearn.cross_validation import train_test_split

?forest = RandomForestClassifier()

?X = df.values[:, 0:4]

?Y = df.values[:, 4]

?trainX, testX, trainY, testY = train_test_split( X, Y, test_size = 0.3)

?forest.fit(trainX, trainY)

?print(‘Accuracy: \n’, forest.score(testX, testY))

?pred = forest.predict(testX)

?K-Means 聚類算法

講解

K-Means算法是一種流行的無監(jiān)督學(xué)習(xí)分類算法,主要用于解決聚類問題。K 是用戶預(yù)輸入的分類數(shù)量。算法先隨機(jī)選擇K個(gè)點(diǎn),然后用距離算法將剩下的對(duì)象分組,最終達(dá)到最優(yōu)聚類。模型的好壞主要取決于數(shù)據(jù)科學(xué)家對(duì)K值的設(shè)定。按照慣例,后臺(tái)獲取相關(guān)視頻了解更多內(nèi)容。

現(xiàn)在我們已經(jīng)對(duì)K-Means聚類了解更多,也明白它的原理了。讓我們?cè)赑ython中實(shí)現(xiàn)一下它的算法。

準(zhǔn)備工作

from sklearn.cluster import KMeans

df = pd.read_csv(‘iris_df.csv’)

df.columns = [‘X1’, ‘X2’, ‘X3’, ‘X4’, ‘Y’]

df = df.drop([‘X4’, ‘X3’], 1)

?df.head()

實(shí)現(xiàn)

?from sklearn.cross_validation import train_test_split

?kmeans = KMeans(n_clusters=3)

?X = df.values[:, 0:2]

?kmeans.fit(X)

?df[‘Pred’] = kmeans.predict(X)

?df.head()

可視化

sns.set_context(“notebook”, font_scale=1.1)

sns.set_style(“ticks”)

sns.lmplot(‘X1’,’X2', scatter=True, fit_reg=False, data=df, hue = ‘Pred’)

PCA主成分分析

講解

主成分分析(PCA)是一種降維算法,可以為數(shù)據(jù)科學(xué)家做很多事。最主要的是,當(dāng)模型有成百上千個(gè)不同特征需要處理時(shí),主成分分析能極大地減少模型計(jì)算量。這是一種無監(jiān)督模型,但使用者依然需要分析降維后的結(jié)果,確保其能保持原數(shù)據(jù)集95%左右的信息。關(guān)于主成分分析還有很多內(nèi)容可以說

現(xiàn)在我們了解了更多主成分分析和它的原理,讓我們?cè)赑ython中實(shí)踐一下。

準(zhǔn)備工作

?trom sklearn import decomposition

?df = pd.read_csv(‘iris_df.csv’)

df.columns = [‘X1’, ‘X2’, ‘X3’, ‘X4’, ‘Y’]

?df.head()

實(shí)現(xiàn)

?from sklearn import decomposition

?pca = decomposition.PCA()

?fa = decomposition.FactorAnalysis()

?X = df.values[:, 0:4]

?Y = df.values[:, 4]

?train, test = train_test_split(X,test_size = 0.3)

?train_reduced = pca.fit_transform(train)

?test_reduced = pca.transform(test)

?pca.n_components_

這份輔導(dǎo)指南僅簡單介紹了當(dāng)下流行的機(jī)器學(xué)習(xí)算法的皮毛, 希望它能在你們成為機(jī)器學(xué)習(xí)大師的旅程上有所幫助。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容