task5 模型融合

2021-10-09 20:14:40 字數 3532 閱讀 6394

內容介紹

模型融合是比賽後期上分的重要手段,特別是多人組隊學習的比賽中,將不同隊友的模型進行融合,可能會收穫意想不到的效果哦,往往模型相差越大且模型表現都不錯的前提下,模型融合後結果會有大幅提公升,以下是模型融合的方式。

平均:

stacking

將若干基學習器獲得的**結果,將**結果作為新的訓練集來訓練乙個學習器。如下圖 假設有五個基學習器,將資料帶入五基學習器中得到**結果,再帶入模型六中進行訓練**。但是由於直接由五個基學習器獲得結果直接帶入模型六中,容易導致過擬合。所以在使用五個基模型進行**的時候,可以考慮使用k折驗證,防止過擬合。

stacking.png

blending

與stacking不同,blending是將**的值作為新的特徵和原特徵合併,構成新的特徵值,用於**。為了防止過擬合,將資料分為兩部分d1、d2,使用d1的資料作為訓練集,d2資料作為測試集。**得到的資料作為新特徵使用d2的資料作為訓練集結合新特徵,**測試集結果。

blending與stacking的不同

stacking

stacking中由於兩層使用的資料不同,所以可以避免資訊洩露的問題。

在組隊競賽的過程中,不需要給隊友分享自己的隨機種子。

blending

由於blending對將資料劃分為兩個部分,在最後 iris =

datasets.load_iris(

)x, y = iris.data[:,

1:3]

, iris.target

clf1 = kneighborsclassifier(n_neighbors=1)

clf2 = randomforestclassifier(random_state=1)

clf3 = gaussiannb(

)lr = logisticregression(

)sclf = stackingclassifier(classifiers=

[clf1, clf2, clf3]

, meta_classifier=lr)

label =

['knn'

,'random forest'

,'***** bayes'

,'stacking classifier'

]clf_list =

[clf1, clf2, clf3, sclf]

fig = plt.figure(figsize=(10

,8))

gs = gridspec.gridspec(2,

2)grid = itertools.product([0

,1],repeat=2)

clf_cv_mean =

clf_cv_std =

for clf, label, grd in

zip(clf_list, label, grid)

:

scores = cross_val_score(clf, x, y, cv=

5, scoring=

'accuracy'

)print

("accuracy: %.2f (+/- %.2f) [%s]"

%(scores.mean(

), scores.std(

), label)))

)))

clf.fit(x, y)

ax = plt.subplot(gs[grd[0]

, grd[1]

])fig = plot_decision_regions(x=x, y=y, clf=clf)

plt.title(label)

plt.show(

)

accuracy: 0.91 (+/- 0.07) [knn]

accuracy: 0.94 (+/- 0.04) [random forest]

accuracy: 0.91 (+/- 0.04) [***** bayes]

accuracy: 0.94 (+/- 0.04) [stacking classifier]

blending

data_0 = iris.data

data = data_0[

:100,:

]target_0 = iris.target

target = target_0[

:100

]#模型融合中基學習器

clfs =

[logisticregression(),

randomforestclassifier(),

extratreesclassifier(),

gradientboostingclassifier()]

#切分一部分資料作為測試集

x, x_predict, y, y_predict = train_test_split(data, target, test_size=

0.3, random_state=

914)

#切分訓練資料集為d1,d2兩部分

x_d1, x_d2, y_d1, y_d2 = train_test_split(x, y, test_size=

0.5, random_state=

914)

dataset_d1 = np.zeros(

(x_d2.shape[0]

,len

(clfs)))

dataset_d2 = np.zeros(

(x_predict.shape[0]

,len

(clfs)))

for j, clf in

enumerate

(clfs)

:#依次訓練各個單模型

clf.fit(x_d1, y_d1)

y_submission = clf.predict_proba(x_d2)[:

,1] dataset_d1[

:, j]

= y_submission

#對於測試集,直接用這k個模型的**值作為新的特徵。

dataset_d2[

:, j]

= clf.predict_proba(x_predict)[:

,1]print

("val auc score: %f"

% roc_auc_score(y_predict, dataset_d2[

:, j]

))

#融合使用的模型

clf = gradientboostingclassifier(

)clf.fit(dataset_d1, y_d2)

y_submission = clf.predict_proba(dataset_d2)[:

,1]print

("val auc score of blending: %f"

%(roc_auc_score(y_predict, y_submission)

))

TASK 5 模型融合

task 5 模型融合 總結自 datawhale 零基礎入門資料探勘 task 5 模型融合 ml67 1 stacking 是用初始訓練資料學習出若干個基學習器後,將這幾個學習器的 結果作為新的訓練集,來學習乙個新的學習器。2 結合策略 如何將個體學習器結合在一起使用的方法。分類可以使用投票法。...

Task5模型融合整理筆記

模型融合用於對多個模型進行融合以得到優於單個模型的效果。模型融合的方法主要有 回歸 算術平均融合,幾何平均融合 分類 投票融合 綜合 排序融合,融合 將多個模型得到的 結果concate之後再次進行模型 def weighted method test pre1,test pre2,w 1 2,1 ...

金融風控 Task5 模型融合

模型融合是比賽後期上分的重要手段,特別是多人組隊學習的比賽中,將不同隊友的模型進行融合,可能會收穫意想不到的效果哦,往往模型相差越大且模型表現都不錯的前提下,模型融合後結果會有大幅提公升,以下是模型融合的方式。平均 a.簡單平均法 b.加權平均法 投票 a.簡單投票法 b.加權投票法 綜合 a.排序...