資料探勘小白之旅task5

2021-10-04 18:17:16 字數 3526 閱讀 1678

模型融合是比賽後期乙個重要的環節,大體來說有如下的型別方式。

什麼是 stacking

簡單來說 stacking 就是當用初始訓練資料學習出若干個基學習器後,將這幾個學習器的**結果作為新的訓練集,來學習乙個新的學習器。

## 生成一些簡單的樣本資料,test_prei 代表第i個模型的**值

test_pre1 =

[1.2

,3.2

,2.1

,6.2

]test_pre2 =

[0.9

,3.1

,2.0

,5.9

]test_pre3 =

[1.1

,2.9

,2.2

,6.0

]# y_test_true 代表第模型的真實值

y_test_true =[1

,3,2

,6] import numpy as np

import pandas as pd

## 定義結果的加權平均函式

def weighted_method

(test_pre1,test_pre2,test_pre3,w=[1

/3,1

/3,1

/3])

: weighted_result = w[0]

*pd.

series

(test_pre1)

+w[1

]*pd.

series

(test_pre2)

+w[2

]*pd.

series

(test_pre3)

return weighted_result

from sklearn import metrics

# 各模型的**結果計算mae

print

('pred1 mae:'

,metrics.

mean_absolute_error

(y_test_true, test_pre1)

)print

('pred2 mae:'

,metrics.

mean_absolute_error

(y_test_true, test_pre2)

)print

('pred3 mae:'

,metrics.

mean_absolute_error

(y_test_true, test_pre3)

)

pred1 mae: 0.175

pred2 mae: 0.075

pred3 mae: 0.1

## 根據加權計算mae

w =[

0.3,

0.4,

0.3] # 定義比重權值

weighted_pre =

weighted_method

(test_pre1,test_pre2,test_pre3,w)

print

('weighted_pre mae:'

,metrics.

mean_absolute_error

(y_test_true, weighted_pre)

)

weighted_pre mae: 0.0575

可以看出加權結果相對於之前的結果是有提公升的,這種我們稱其為簡單的加權平均。

from sklearn import linear_model

def stacking_method

(train_reg1,train_reg2,train_reg3,y_train_true,test_pre1,test_pre2,test_pre3,model_l2= linear_model.

linearregression()

):model_l2.

fit(pd.

concat

([pd.

series

(train_reg1)

,pd.

series

(train_reg2)

,pd.

series

(train_reg3)

],axis=1)

.values,y_train_true)

stacking_result = model_l2.

predict

(pd.

concat

([pd.

series

(test_pre1)

,pd.

series

(test_pre2)

,pd.

series

(test_pre3)

],axis=1)

.values)

return stacking_result

## 生成一些簡單的樣本資料,test_prei 代表第i個模型的**值

train_reg1 =

[3.2

,8.2

,9.1

,5.2

]train_reg2 =

[2.9

,8.1

,9.0

,4.9

]train_reg3 =

[3.1

,7.9

,9.2

,5.0

]# y_test_true 代表第模型的真實值

y_train_true =[3

,8,9

,5] test_pre1 =

[1.2

,3.2

,2.1

,6.2

]test_pre2 =

[0.9

,3.1

,2.0

,5.9

]test_pre3 =

[1.1

,2.9

,2.2

,6.0

]# y_test_true 代表第模型的真實值

y_test_true =[1

,3,2

,6] model_l2= linear_model.

linearregression()

stacking_pre =

stacking_method

(train_reg1,train_reg2,train_reg3,y_train_true,

test_pre1,test_pre2,test_pre3,model_l2)

print

('stacking_pre mae:'

,metrics.

mean_absolute_error

(y_test_true, stacking_pre)

)

stacking_pre mae: 0.0421348314607

可以發現模型結果相對於之前有進一步的提公升,這是我們需要注意的一點是,對於第二層stacking的模型不宜選取的過於複雜,這樣會導致模型在訓練集上過擬合,從而使得在測試集上並不能達到很好的效果。

零基礎入門資料探勘 Task5 模型融合

先產生一組個體學習器,然後利用某種策略將它們結合起來,加強模型效果。周志華和李航老師的書中都證明隨著個體學習器數目的增大,整合的錯誤率將呈指數級下降,最終趨向於零。因此,模型融合被廣泛應用。簡單來說就是通過對一組的基分類器以某種方式進行組合,以提公升模型整體效能的方法。多模型投票 votingcla...

TASK 5 模型融合

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

Task5 學習筆記

模型融合是對多種調參完成的模型以某種方式進行融合,進而提公升結果的準確性。其一般來說有以下幾種方法 簡單加權融合 對於回歸問題,簡單加權融合一般包括對模型進行算術平均或者幾何平均進行融合 對於分類問題可以通過投票方式進行融合,包括軟投票與硬投票,區別在於軟投票是在硬投票的基礎上賦予了不同的權重 對於...