我們知道機(jī)器學(xué)習(xí)領(lǐng)域的一些最重要的分類(lèi)算法,包括以下算法:
- 邏輯回歸
- 神經(jīng)網(wǎng)絡(luò)
- 決策樹(shù)
- 支持向量機(jī)
現(xiàn)在我們將有機(jī)會(huì)在實(shí)際數(shù)據(jù)中運(yùn)用它們弦聂!在 sklearn 中非常簡(jiǎn)單,只需定義分類(lèi)器怕膛,然后使用下面這行代碼使分類(lèi)器與數(shù)據(jù)擬合(稱(chēng)為 X, y):
classifier.fit(X,y)
以下是我們定義的主分類(lèi)器缀棍,以及必須導(dǎo)入的文件包:
邏輯回歸
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression()
神經(jīng)網(wǎng)絡(luò)
from sklearn.neural_network import MLPClassifier
classifier = MLPClassifier()
決策樹(shù)
from sklearn.tree import DecisionTreeClassifier
classifier = DecisionTreeClassifier()
支持向量機(jī)
from sklearn.svm import SVC
classifier = SVC()
示例:邏輯回歸
比如宅此,有下圖數(shù)據(jù)集:
我們可以使用下面代碼進(jìn)行訓(xùn)練
from sklearn.linear_model import LogisticRegression
classifier = LogisticRegression()
classifier.fit(X,y)
可以得出下圖的界線(xiàn):
示例:多個(gè)模型訓(xùn)練
比如有下圖數(shù)據(jù)集:
我們可以使用上面介紹的幾個(gè)模型進(jìn)行訓(xùn)練(邏輯回歸、決策樹(shù)或支持向量機(jī))爬范,來(lái)看看哪個(gè)模型能夠更好地?cái)M合數(shù)據(jù)父腕。關(guān)鍵代碼如下:
# 引用算法程序包
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
# Logistic Regression Classifier
classifier = LogisticRegression()
classifier.fit(X,y)
# Decision Tree Classifier
classifier = DecisionTreeClassifier()
classifier.fit(X,y)
# Support Vector Machine Classifier
classifier = SVC()
classifier.fit(X,y)
通過(guò)三個(gè)模型訓(xùn)練后,我們可以得到以下結(jié)果圖形:
似乎邏輯回歸的效果不太理想青瀑,因?yàn)樗蔷€(xiàn)性算法璧亮。決策樹(shù)能夠很好地劃分?jǐn)?shù)據(jù),SVM 的效果也非常好斥难。
調(diào)整參數(shù)
從上面我們看出SVM的效果非常好枝嘶,下面我們用SVM擬合復(fù)雜的數(shù)據(jù):
我們先簡(jiǎn)單用SVM進(jìn)行擬合數(shù)據(jù),代碼如下:
classifier = SVC()
classifier.fit(X,y)
如果輸入上述內(nèi)容哑诊,訓(xùn)練不出結(jié)果群扶。這里,我們沒(méi)有充分利用 SVM 分類(lèi)器镀裤。首先竞阐,我們使用了正確的內(nèi)核嗎?例如暑劝,我們可以使用 2 次多項(xiàng)式內(nèi)容骆莹,如下所示:
classifier = SVC(kernel = 'poly', degree = 2)
你可以自己根據(jù)以下這些值進(jìn)行自由設(shè)定參數(shù),試著調(diào)整這些參數(shù)并使它們能夠畫(huà)出期望的界限區(qū)域担猛;
- kernel:linear (線(xiàn)性)幕垦, poly(多項(xiàng)式), rbf(高斯核)
- degree:多項(xiàng)式內(nèi)核的次數(shù)(如果選擇了多項(xiàng)式內(nèi)核)
- gamma :γ 參數(shù)
- C:C參數(shù)
比如,可以這樣設(shè)置:
classifier = SVC(kernel = 'rbf', gamma = 200)