Python8種最常見火爆的機器學習演算法
毋庸置疑,近來機器學習人氣日益高漲,逐漸在流行詞榜單上佔據一席之地。機器學習演算法繁多,到底該選擇哪一種處理相關資料是困擾很多學習者的問題。本文將以一種清晰簡明的方式,解釋並實踐最常見的幾種機器學習演算法。
接下來,我們將羅列8種最常見火爆的機器學習演算法,通過Python,將它們分別適用同一個經典資料集Iris(線性迴歸和邏輯迴歸除外),進而分辨出不同演算法在預測準確率、模型建立過程、對資料集的使用方式等方向的異同。
推薦下我自己建立的Python學習交流群960410445,這是Python學習交流的地方,不管你是小白還是大牛,小編都歡迎,不定期分享乾貨,包括我整理的一份適合零基礎學習Python的資料和入門教程。
8大演算法
本文中將覆蓋共8種不同的機器學習演算法(後續會有更多)。閱讀時本指南時,你可以自由的隨意翻翻或跳過任何一個已經熟悉的演算法。請根據著個人需求使用這份指南。閒話少說,本文將分為以下及部分。
1.線性迴歸
2.邏輯迴歸
3.決策樹
4.支援向量機
5.KNN 臨近演算法
6.隨機森林
7. K-Means聚類
8.主成分分析
若嘗試使用他人的程式碼時,結果你發現需要三個新的模組包而且本程式碼是用舊版本的語言寫出的,這將讓人感到無比沮喪。為了大家更加方便,我將使用Python3.5.2並會在下方列出了我在做這些練習前載入的模組包。我也從UCI機器學習庫中下載了Diabetes和Iris資料集作為樣本資料。
如果你希望跳過這些內容,僅想看看全部程式碼,你可以直接前往Github上檢視。
線性迴歸
講解
線性迴歸應該是機器學習原理中最流行也是最不受重視的演算法了。在比較模型表現時,許多資料科學家總是會忽略這一事實,即比起復雜更應該選擇簡單的方法。
總之,線性迴歸是一種基於連續型變數進行預測的有監督學習演算法。線性迴歸適用範圍廣泛,它既能對單一變數做迴歸(簡單線性迴歸)也可以對多維特徵做迴歸(多元線性迴歸)。他的工作原理是,對變數分配最佳權重以產生的一條直線(ax+b)用於預測結果。請檢視以下視訊瞭解更多詳盡內容。
現在你應該已經掌握了線性迴歸的概念,接下來讓我們看看怎樣在Python中實現它。
準備工作
視覺化
實現
邏輯迴歸
講解
邏輯迴歸是有監督分類演算法的一種,對預測離散變數非常有效。一種典型的用法是用邏輯迴歸方程預測事件在0到1之間發生的概率。
當我第一次學習邏輯迴歸時,以為是這只是一個小眾工具,並沒有引起十分的注意。後來我才發現,這種想法真是大錯特錯。邏輯迴歸的一些潛在概念在機器學習其他演算法例如神經網路中也有用到。請大家牢記這一點,然後檢視下面的視訊瞭解更多內容。
現在你已經掌握了邏輯迴歸的一些概念,讓我們在Python中加以實現。
準備工作
視覺化
實現
決策樹
講解
決策樹也是有監督學習的一種,即可用於分類也可用於迴歸。在我的經驗裡,他們主要用於分類。模型先接受輸入的一種情況,然後沿著樹枝向下走,依據設計的條件檢測重要變數。根據結果,選擇繼續往左邊的子枝走還是往右邊的子枝走,如此重複。一般整個過程中,最重要的特徵會更靠近樹的根部。
決策樹正變得越來越受歡迎,而且任何專案的資料科學家都能用它作為一種強分類演算法,尤其與隨機是森林,Boosting 演算法和Bagging 演算法一起使用時。再一次,使用下方的視訊更深入瞭解決策樹的基礎功能。
現在你知道決策樹以及它怎樣運作了,讓我們去Python中實踐一下。
準備工作
實現
視覺化
支援向量機
講解
支援向量機,又稱SVM,是一種通過在不同類別的資料間生成一條分界線實現分類的知名的有監督分類演算法。簡單來說,通過計算最優分割平面,使得屬於兩個不同類的資料點間隔最大,從而得到分類向量。
分類向量一般被預設或被視為線性,然而不一定非要這樣。如果核函式不是預設的高斯函式或線性函式,分類向量也可以是非線性的形式。關於SVM還有很多可以介紹,請繼續觀看指導視訊。(後臺回覆 “程式碼”2字獲取相關資源。)
現在你已經瞭解支援向量機了,讓我們在Python中一起實踐一下。
準備工作
實現
視覺化
KNN鄰近演算法
講解
K最鄰近分類演算法,或縮寫為KNN,是一種有監督學習演算法,專門用於分類。演算法先關注不同類的中心,對比樣本和類中心的距離(通常用歐幾里得距離方程)。如果一個樣本中的大多數屬於某一個類別,則該樣本都歸屬於這個類別。
你已經瞭解了KNN演算法的內在概念,讓我們在Python中實踐一下。
準備工作
視覺化
實現
隨機森林
講解
隨機森林是一種流行的有監督整合學習演算法。整合的意思是把許多”弱學習器”結合在一起,形成一個強預測器。在本例中,每一個隨機生成的決策樹都是一個弱學習器,放在一起成為了一個強預測器—隨機森林。後臺獲取相關視訊,介紹更多隨機森林背後的原理。
知道了隨機森林的運作原理,到了在Python中實踐的時間了。
準備工作
from sklearn.ensemble import RandomForestClassifier
df = pd.read_csv(‘iris_df.csv’)
df.columns = [‘X1’, ‘X2’, ‘X3’, ‘X4’, ‘Y’]
df.head()
實現
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演算法是一種流行的無監督學習分類演算法,主要用於解決聚類問題。K 是使用者預輸入的分類數量。演算法先隨機選擇K個點,然後用距離演算法將剩下的物件分組,最終達到最優聚類。模型的好壞主要取決於資料科學家對K值的設定。按照慣例,後臺獲取相關視訊瞭解更多內容。
現在我們已經對K-Means聚類瞭解更多,也明白它的原理了。讓我們在Python中實現一下它的演算法。
準備工作
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()
實現
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)是一種降維演算法,可以為資料科學家做很多事。最主要的是,當模型有成百上千個不同特徵需要處理時,主成分分析能極大地減少模型計算量。這是一種無監督模型,但使用者依然需要分析降維後的結果,確保其能保持原資料集95%左右的資訊。關於主成分分析還有很多內容可以說
現在我們瞭解了更多主成分分析和它的原理,讓我們在Python中實踐一下。
準備工作
trom sklearn import decomposition
df = pd.read_csv(‘iris_df.csv’)
df.columns = [‘X1’, ‘X2’, ‘X3’, ‘X4’, ‘Y’]
df.head()
實現
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_
這份輔導指南僅簡單介紹了當下流行的機器學習演算法的皮毛, 希望它能在你們成為機器學習大師的旅程上有所幫助。