Bagging與Boosting

加載數(shù)據(jù)

import pandas as pd
df_wine = pd.read_csv('http://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data', header=None)
df_wine.columns = ['Class label', 'Alcohol', 
                   'Malic acid', 'Ash', 
                   'Alcalinity of ash', 'Magnesium', 
                   'Total phenols', 'Flavanoids', 
                   'Nonflavanoid phenols', 'Proanthocyanins', 
                   'Color intensity', 'Hue', 
                   'OD280/OD315 of diluted wines', 'Proline']
y = df_wine['Class label'].values

特征選擇

為了方便后面可視化,我們只選取2個特征雷厂,通過自變量與因變量y相關(guān)系數(shù)來選擇

# pearsonr可以計(jì)算相關(guān)系數(shù)與p值
# 當(dāng)p<0.01表示兩個變量強(qiáng)相關(guān)
from scipy.stats import pearsonr

lable=df_wine.values[:,0]
lr = []
for i, line in enumerate(df_wine.values.T):
    lr.append([pearsonr(lable,line),i])
lr.sort()
X = df_wine[[df_wine.columns[lr[0][1]],df_wine.columns[lr[-2][1]]]].values

還可以通過PCA降維來選擇,本例降維后分類效果并不好

# pearsonr可以計(jì)算相關(guān)系數(shù)與p值
# 當(dāng)p<0.01表示兩個變量強(qiáng)相關(guān)
from scipy.stats import pearsonr

lable=df_wine.values[:,0]
lr = []
for i, line in enumerate(df_wine.values.T):
    lr.append([pearsonr(lable,line),i])
lr.sort()
X = df_wine[[df_wine.columns[lr[0][1]],df_wine.columns[lr[-2][1]]]].values

因?yàn)檫@里有標(biāo)簽显歧,還可以通過LDA來降維選擇,效果比較好,數(shù)據(jù)分類達(dá)到100%正確

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
X = df_wine.iloc[:,range(1,len(df_wine.columns),1)].values
lda = LinearDiscriminantAnalysis(n_components=2)
X = lda.fit(X, y).transform(X)

調(diào)參,這里只調(diào)一個決策樹深度參數(shù)

from sklearn.preprocessing import LabelEncoder
from sklearn.cross_validation import train_test_split
from sklearn.grid_search import GridSearchCV
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import BaggingClassifier

# # 拆分訓(xùn)練集的30%作為測試集
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3, random_state=1)
param_test1 = {'max_depth':range(1,20,1)}
gsearch1 = GridSearchCV(estimator = DecisionTreeClassifier(criterion="entropy",
                                random_state=10), 
                       param_grid = param_test1,cv=10)
gsearch1.fit(X_train,y_train)
#print gsearch1.grid_scores_, 
print gsearch1.best_params_ 
print gsearch1.best_score_

輸出

{'max_depth': 8}
0.822580645161
度量單個決策樹的準(zhǔn)確性
# 度量單個決策樹的準(zhǔn)確性
from sklearn.metrics import accuracy_score
tree = DecisionTreeClassifier(criterion="entropy", max_depth=gsearch1.best_params_['max_depth'])
tree = tree.fit(X_train, y_train)
y_train_pred = tree.predict(X_train)
y_test_pred = tree.predict(X_test)

tree_train = accuracy_score(y_train, y_train_pred)
tree_test = accuracy_score(y_test, y_test_pred)
print('Decision tree train/test accuracies %.3f/%.3f' % (tree_train, tree_test))
Decision tree train/test accuracies 0.984/0.815
# 生成50個決策樹,詳細(xì)的參數(shù)建議參考官方文檔
bag = BaggingClassifier(base_estimator=tree, n_estimators=50, 
                        max_samples=1.0, max_features=1.0, 
                        bootstrap=True, bootstrap_features=False, 
                        n_jobs=1, random_state=1)

# 度量bagging分類器的準(zhǔn)確性
bag = bag.fit(X_train, y_train)
y_train_pred = bag.predict(X_train)
y_test_pred = bag.predict(X_test)
bag_train = accuracy_score(y_train, y_train_pred)
bag_test = accuracy_score(y_test, y_test_pred)
print('Bagging train/test accuracies %.3f/%.3f' % (bag_train, bag_test))

Bagging分類器的效果的確要比單個決策樹的效果好痘煤,提高了一點(diǎn)

Bagging train/test accuracies 1.000/0.852

Boosting分類器, Bagging是投票平均模式,Boosting

ada = AdaBoostClassifier(base_estimator=tree, n_estimators=1000, learning_rate=0.1, random_state=0)
ada = ada.fit(X_train, y_train)
y_train_pred = ada.predict(X_train)
y_test_pred = ada.predict(X_test)
ada_train = accuracy_score(y_train, y_train_pred)
ada_test = accuracy_score(y_test, y_test_pred)
print('AdaBoost train/test accuracies %.3f/%.3f' % (ada_train, ada_test))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末猿规,一起剝皮案震驚了整個濱河市衷快,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌姨俩,老刑警劉巖蘸拔,帶你破解...
    沈念sama閱讀 222,729評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異环葵,居然都是意外死亡调窍,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,226評論 3 399
  • 文/潘曉璐 我一進(jìn)店門积担,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人猬仁,你說我怎么就攤上這事帝璧。” “怎么了湿刽?”我有些...
    開封第一講書人閱讀 169,461評論 0 362
  • 文/不壞的土叔 我叫張陵的烁,是天一觀的道長。 經(jīng)常有香客問我诈闺,道長渴庆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,135評論 1 300
  • 正文 為了忘掉前任雅镊,我火速辦了婚禮襟雷,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘仁烹。我一直安慰自己耸弄,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,130評論 6 398
  • 文/花漫 我一把揭開白布卓缰。 她就那樣靜靜地躺著计呈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪征唬。 梳的紋絲不亂的頭發(fā)上捌显,一...
    開封第一講書人閱讀 52,736評論 1 312
  • 那天,我揣著相機(jī)與錄音总寒,去河邊找鬼扶歪。 笑死,一個胖子當(dāng)著我的面吹牛摄闸,可吹牛的內(nèi)容都是我干的击罪。 我是一名探鬼主播哲嘲,決...
    沈念sama閱讀 41,179評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼媳禁!你這毒婦竟也來了眠副?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,124評論 0 277
  • 序言:老撾萬榮一對情侶失蹤竣稽,失蹤者是張志新(化名)和其女友劉穎囱怕,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體毫别,經(jīng)...
    沈念sama閱讀 46,657評論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡娃弓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,723評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了岛宦。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片台丛。...
    茶點(diǎn)故事閱讀 40,872評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖砾肺,靈堂內(nèi)的尸體忽然破棺而出挽霉,到底是詐尸還是另有隱情,我是刑警寧澤变汪,帶...
    沈念sama閱讀 36,533評論 5 351
  • 正文 年R本政府宣布侠坎,位于F島的核電站,受9級特大地震影響裙盾,放射性物質(zhì)發(fā)生泄漏实胸。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,213評論 3 336
  • 文/蒙蒙 一番官、第九天 我趴在偏房一處隱蔽的房頂上張望庐完。 院中可真熱鬧,春花似錦徘熔、人聲如沸假褪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,700評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽生音。三九已至,卻和暖如春窒升,著一層夾襖步出監(jiān)牢的瞬間缀遍,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,819評論 1 274
  • 我被黑心中介騙來泰國打工饱须, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留域醇,地道東北人。 一個月前我還...
    沈念sama閱讀 49,304評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像譬挚,于是被迫代替她去往敵國和親锅铅。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,876評論 2 361

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

  • 機(jī)器學(xué)習(xí)是做NLP和計(jì)算機(jī)視覺這類應(yīng)用算法的基礎(chǔ)减宣,雖然現(xiàn)在深度學(xué)習(xí)模型大行其道盐须,但是懂一些傳統(tǒng)算法的原理和它們之間...
    在河之簡閱讀 20,515評論 4 65
  • 目錄 正則化算法(Regularization Algorithms) 集成算法(Ensemble Algorit...
    rol_ling閱讀 597評論 0 0
  • 作者:開心花 小學(xué)的時(shí)候。我最怕運(yùn)動會和體育課漆腌。 在操練時(shí)贼邓,“1,2闷尿,1塑径,2……”左右踏步走的時(shí)候,我總是左右不協(xié)...
    開心花和開心果閱讀 717評論 0 2
  • 白天,太陽毒辣劳景, 我們彼此遠(yuǎn)遠(yuǎn)望著誉简, 一句話也沒有說—— 干裂的白日夢持續(xù)很久, 皮膚上留下許多鹽枢泰, 表明我們曾在...
    三水林楓閱讀 700評論 20 31
  • 今天看了一本有點(diǎn)意思的書描融。 有意思铝噩,我的理解是它不在慣性思維里衡蚂,出人意表卻又在情理中。 其中對于朝...
    素女古蘭閱讀 344評論 0 1