scikit-learn系列之分類算法篩查

算法篩查

算法篩查(spot checking)用來(lái)發(fā)現(xiàn)可以很好解決機(jī)器學(xué)習(xí)問(wèn)題的算法。在著手做之前若未,你永遠(yuǎn)也不知道哪種算法最契合你的數(shù)據(jù)。因此你必須嘗試大量的算法,找出一個(gè)最有潛力的算法磷斧,繼續(xù)深入挖掘。本文中會(huì)展示六種適用于分類問(wèn)題的算法捷犹,我們可以使用scikit-learn進(jìn)行算法篩查弛饭。

算法篩查

在為你的機(jī)器學(xué)習(xí)問(wèn)題選擇算法時(shí),問(wèn)題不是:我應(yīng)該使用哪種算法萍歉?而是:哪些算法可以用于我的算法篩查侣颂?你可以推測(cè)哪些算法可能適合你的數(shù)據(jù)集,這是一個(gè)好的開(kāi)始枪孩。我推薦嘗試混合一些算法憔晒,看看哪一個(gè)可以最好的反映出你的數(shù)據(jù)結(jié)構(gòu)。

  1. 嘗試混合具有不同表征的算法 (instances and trees)蔑舞。
  2. 嘗試混合不同的學(xué)習(xí)算法 (different algorithms for learning the same type of representation)拒担。
  3. 嘗試混合不同的建模類型的算法 (linear and nonlinear functions or parametric and nonparametric)。

我們將了解6個(gè)分類算法攻询,可以用于算法篩查从撼。
兩個(gè)線性機(jī)器學(xué)習(xí)算法:

  1. Logistic Regression
  2. Linear Discriminant Analysis

四個(gè)非線性的機(jī)器學(xué)習(xí)算:

  1. K-Nearest Neighbors
  2. Naive Bayes
  3. Classification and Regression Trees
  4. Support Vector Machines

使用Pima Indians onset of Diabetes 數(shù)據(jù)集。變量為數(shù)值型钧栖,是一個(gè)關(guān)于二分分類問(wèn)題的數(shù)據(jù)低零。統(tǒng)一使用10-fold的交叉驗(yàn)證來(lái)展示如何進(jìn)行算法篩選婆翔,使用平均的準(zhǔn)確率來(lái)代表算法的表現(xiàn)。

6種算法

  1. 邏輯回歸假設(shè)數(shù)值型輸入掏婶,數(shù)值符合高斯分布啃奴,用于二分的分類問(wèn)題。使用LogisticRegression類構(gòu)建模型气堕。
  2. 線性判別分析用于二分或者多分的分類問(wèn)題纺腊。同樣假設(shè)數(shù)值符合高斯分布。使用LinearDiscriminantAnalysis類構(gòu)建模型茎芭。
  3. K近鄰使用距離的方法為新數(shù)據(jù)找到K個(gè)相似的實(shí)例揖膜,把鄰居的平均作為預(yù)測(cè)結(jié)果。使用KNeighborsClassifier類構(gòu)建模型梅桩。
  4. 樸素貝葉斯算法計(jì)算每個(gè)類別的概率和已知輸入值的每個(gè)類別的條件概率壹粟。新的數(shù)據(jù)計(jì)算以上概率,假設(shè)它們彼此獨(dú)立的情況下宿百,做乘法趁仙。使用GaussianNB類構(gòu)建模型。
  5. 分類和回歸數(shù)(CART or just decision trees) 使用訓(xùn)練數(shù)據(jù)構(gòu)建二分樹(shù)垦页。通過(guò)評(píng)價(jià)數(shù)據(jù)變量最小化cost函數(shù)來(lái)獲得分割點(diǎn)雀费。使用DecisionTreeClassifier類構(gòu)建模型。
  6. 支持向量機(jī)找到一條線可以分離兩類痊焊。與分割線最近的數(shù)據(jù)實(shí)例叫做支持向量盏袄,這些支持向量對(duì)分離線有決定性影響。該算法的一個(gè)要點(diǎn)是使用不同的核函數(shù)來(lái)建立模型薄啥。Radial Basis Function是默認(rèn)的核函數(shù)辕羽。使用SVC類構(gòu)建模型。

代碼如下(在原代碼的基礎(chǔ)上做了一個(gè)循環(huán)):

# Logistic Regression Classification
import pandas
from sklearn import model_selection
from sklearn.linear_model import LogisticRegression
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data"
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
dataframe = pandas.read_csv(url, names=names)
array = dataframe.values
X = array[:,0:8]
Y = array[:,8]
seed = 7
kfold = model_selection.KFold(n_splits=10, random_state=seed)
def build_model(model_name):
    model = model_name()
    return model
for model_name in [LogisticRegression,LinearDiscriminantAnalysis,KNeighborsClassifier,GaussianNB,DecisionTreeClassifier,SVC]:
    model = build_model(model_name)
    results = model_selection.cross_val_score(model, X, Y, cv=kfold)
    print("%s mean accuracy:%s")%(model_name,results.mean())

結(jié)果如下:

<class 'sklearn.linear_model.logistic.LogisticRegression'> mean accuracy:0.76951469583
<class 'sklearn.discriminant_analysis.LinearDiscriminantAnalysis'> mean accuracy:0.773462064252
<class 'sklearn.neighbors.classification.KNeighborsClassifier'> mean accuracy:0.726555023923
<class 'sklearn.naive_bayes.GaussianNB'> mean accuracy:0.75517771702
<class 'sklearn.tree.tree.DecisionTreeClassifier'> mean accuracy:0.696548188653
<class 'sklearn.svm.classes.SVC'> mean accuracy:0.651025290499

主要知識(shí)點(diǎn)

  • model_selection.KFold
  • model_selection.cross_val_score
  • results.mean
  • linear_model.LogisticRegression
  • discriminat_analysis.LinearDiscriminantAnalysis
  • neighbors.KNeighborsClassifier
  • naive_bayes.GaussianNB
  • tree.DecisionTreeClassifier
  • svm.SVC

原文鏈接:Spot-Check Classification Machine Learning Algorithms in Python with scikit-learn

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末垄惧,一起剝皮案震驚了整個(gè)濱河市刁愿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌到逊,老刑警劉巖铣口,帶你破解...
    沈念sama閱讀 216,591評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異觉壶,居然都是意外死亡枷踏,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門掰曾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人停团,你說(shuō)我怎么就攤上這事旷坦√桶荆” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,823評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵秒梅,是天一觀的道長(zhǎng)旗芬。 經(jīng)常有香客問(wèn)我,道長(zhǎng)捆蜀,這世上最難降的妖魔是什么疮丛? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,204評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮辆它,結(jié)果婚禮上誊薄,老公的妹妹穿的比我還像新娘。我一直安慰自己锰茉,他們只是感情好呢蔫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,228評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著飒筑,像睡著了一般片吊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上协屡,一...
    開(kāi)封第一講書(shū)人閱讀 51,190評(píng)論 1 299
  • 那天俏脊,我揣著相機(jī)與錄音,去河邊找鬼肤晓。 笑死爷贫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的材原。 我是一名探鬼主播沸久,決...
    沈念sama閱讀 40,078評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼余蟹!你這毒婦竟也來(lái)了卷胯?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 38,923評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤威酒,失蹤者是張志新(化名)和其女友劉穎窑睁,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體葵孤,經(jīng)...
    沈念sama閱讀 45,334評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡担钮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,550評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了尤仍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箫津。...
    茶點(diǎn)故事閱讀 39,727評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出苏遥,到底是詐尸還是另有隱情饼拍,我是刑警寧澤,帶...
    沈念sama閱讀 35,428評(píng)論 5 343
  • 正文 年R本政府宣布田炭,位于F島的核電站师抄,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏教硫。R本人自食惡果不足惜叨吮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,022評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瞬矩。 院中可真熱鬧茶鉴,春花似錦、人聲如沸丧鸯。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,672評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)丛肢。三九已至围肥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蜂怎,已是汗流浹背穆刻。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,826評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留杠步,地道東北人氢伟。 一個(gè)月前我還...
    沈念sama閱讀 47,734評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像幽歼,于是被迫代替她去往敵國(guó)和親朵锣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,619評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容