Task5 模型融合

1. 模型融合目標(biāo)

對于多種調(diào)參完成的模型進(jìn)行模型融合疏旨。

2. Stacking相關(guān)理論介紹

stacking 是用初始訓(xùn)練數(shù)據(jù)學(xué)習(xí)出若干個基學(xué)習(xí)器后,將這幾個學(xué)習(xí)器的預(yù)測結(jié)果作為新的訓(xùn)練集趴樱,來學(xué)習(xí)一個新的學(xué)習(xí)器。
將個體學(xué)習(xí)器結(jié)合在一起的時候使用的方法叫做結(jié)合策略酪捡。對于分類問題叁征,可以使用投票法來選擇輸出最多的類。對于回歸問題逛薇,可以將分類器輸出的結(jié)果求平均值捺疼。
投票法和平均法都是很有效的結(jié)合策略,Stacking是使用另外一個機(jī)器學(xué)習(xí)算法來將個體機(jī)器學(xué)習(xí)器的結(jié)果結(jié)合在一起的一種結(jié)合策略永罚。
在stacking方法中啤呼,把個體學(xué)習(xí)器叫做初級學(xué)習(xí)器卧秘,用于結(jié)合的學(xué)習(xí)器叫做次級學(xué)習(xí)器或元學(xué)習(xí)器(meta-learner),次級學(xué)習(xí)器用于訓(xùn)練的數(shù)據(jù)叫做次級訓(xùn)練集官扣。次級訓(xùn)練集是在訓(xùn)練集上用初級學(xué)習(xí)器得到的翅敌。

3. 代碼實現(xiàn)

導(dǎo)包

import pandas as pd
import numpy as np
import warnings
import matplotlib
import matplotlib.pyplot as plt
import seaborn as sns

warnings.filterwarnings('ignore')
%matplotlib inline

讀取數(shù)據(jù)

Train_data = pd.read_csv('used_car_train_20200313.csv', sep=' ')
TestB_data = pd.read_csv('used_car_testB_20200421.csv', sep=' ')

print(Train_data.shape)
print(TestB_data.shape)

Train_data.head()

查看數(shù)據(jù)并預(yù)處理

numerical_cols = Train_data.select_dtypes(exclude = 'object').columns
print(numerical_cols)

feature_cols = [col for col in numerical_cols if col not in ['SaleID','name','regDate','price']]

X_data = Train_data[feature_cols]
Y_data = Train_data['price']

X_test  = TestB_data[feature_cols]

print('X train shape:',X_data.shape)
print('X test shape:',X_test.shape)
def Sta_inf(data):
    print('_min',np.min(data))
    print('_max:',np.max(data))
    print('_mean',np.mean(data))
    print('_ptp',np.ptp(data))
    print('_std',np.std(data))
    print('_var',np.var(data))

print('Sta of label:')
Sta_inf(Y_data)
X_data = X_data.fillna(-1)
X_test = X_test.fillna(-1)

def build_model_lr(x_train,y_train):
    reg_model = linear_model.LinearRegression()
    reg_model.fit(x_train,y_train)
    return reg_model

def build_model_ridge(x_train,y_train):
    reg_model = linear_model.Ridge(alpha=0.8)#alphas=range(1,100,5)
    reg_model.fit(x_train,y_train)
    return reg_model

def build_model_lasso(x_train,y_train):
    reg_model = linear_model.LassoCV()
    reg_model.fit(x_train,y_train)
    return reg_model

def build_model_gbdt(x_train,y_train):
    estimator =GradientBoostingRegressor(loss='ls',subsample= 0.85,max_depth= 5,n_estimators = 100)
    param_grid = { 
            'learning_rate': [0.05,0.08,0.1,0.2],
            }
    gbdt = GridSearchCV(estimator, param_grid,cv=3)
    gbdt.fit(x_train,y_train)
    print(gbdt.best_params_)
    # print(gbdt.best_estimator_ )
    return gbdt

def build_model_xgb(x_train,y_train):
    model = xgb.XGBRegressor(n_estimators=120, learning_rate=0.08, gamma=0, subsample=0.8,\
        colsample_bytree=0.9, max_depth=5) #, objective ='reg:squarederror'
    model.fit(x_train, y_train)
    return model

def build_model_lgb(x_train,y_train):
    estimator = lgb.LGBMRegressor(num_leaves=63,n_estimators = 100)
    param_grid = {
        'learning_rate': [0.01, 0.05, 0.1],
    }
    gbm = GridSearchCV(estimator, param_grid)
    gbm.fit(x_train, y_train)
    return gbm
## xgb
xgr = xgb.XGBRegressor(n_estimators=120, learning_rate=0.1, subsample=0.8,\
        colsample_bytree=0.9, max_depth=7) # ,objective ='reg:squarederror'

scores_train = []
scores = []

## 5折交叉驗證方式
sk=StratifiedKFold(n_splits=5,shuffle=True,random_state=0)
for train_ind,val_ind in sk.split(X_data,Y_data):
    
    train_x=X_data.iloc[train_ind].values
    train_y=Y_data.iloc[train_ind]
    val_x=X_data.iloc[val_ind].values
    val_y=Y_data.iloc[val_ind]
    
    xgr.fit(train_x,train_y)
    pred_train_xgb=xgr.predict(train_x)
    pred_xgb=xgr.predict(val_x)
    
    score_train = mean_absolute_error(train_y,pred_train_xgb)
    scores_train.append(score_train)
    score = mean_absolute_error(val_y,pred_xgb)
    scores.append(score)

print('Train mae:',np.mean(score_train))
print('Val mae',np.mean(scores))
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市惕蹄,隨后出現(xiàn)的幾起案子蚯涮,更是在濱河造成了極大的恐慌,老刑警劉巖卖陵,帶你破解...
    沈念sama閱讀 219,188評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件遭顶,死亡現(xiàn)場離奇詭異,居然都是意外死亡赶促,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,464評論 3 395
  • 文/潘曉璐 我一進(jìn)店門挟炬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來鸥滨,“玉大人,你說我怎么就攤上這事谤祖⌒鲎遥” “怎么了?”我有些...
    開封第一講書人閱讀 165,562評論 0 356
  • 文/不壞的土叔 我叫張陵粥喜,是天一觀的道長凸主。 經(jīng)常有香客問我,道長额湘,這世上最難降的妖魔是什么卿吐? 我笑而不...
    開封第一講書人閱讀 58,893評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮锋华,結(jié)果婚禮上嗡官,老公的妹妹穿的比我還像新娘。我一直安慰自己毯焕,他們只是感情好衍腥,可當(dāng)我...
    茶點故事閱讀 67,917評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纳猫,像睡著了一般婆咸。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上芜辕,一...
    開封第一講書人閱讀 51,708評論 1 305
  • 那天尚骄,我揣著相機(jī)與錄音,去河邊找鬼侵续。 笑死乖仇,一個胖子當(dāng)著我的面吹牛憾儒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播乃沙,決...
    沈念sama閱讀 40,430評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼起趾,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了警儒?” 一聲冷哼從身側(cè)響起训裆,我...
    開封第一講書人閱讀 39,342評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蜀铲,沒想到半個月后边琉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,801評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡记劝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,976評論 3 337
  • 正文 我和宋清朗相戀三年变姨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片厌丑。...
    茶點故事閱讀 40,115評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡定欧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出怒竿,到底是詐尸還是另有隱情砍鸠,我是刑警寧澤,帶...
    沈念sama閱讀 35,804評論 5 346
  • 正文 年R本政府宣布耕驰,位于F島的核電站爷辱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏朦肘。R本人自食惡果不足惜饭弓,卻給世界環(huán)境...
    茶點故事閱讀 41,458評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望媒抠。 院中可真熱鬧示启,春花似錦、人聲如沸领舰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,008評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽冲秽。三九已至舍咖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锉桑,已是汗流浹背排霉。 一陣腳步聲響...
    開封第一講書人閱讀 33,135評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留民轴,地道東北人攻柠。 一個月前我還...
    沈念sama閱讀 48,365評論 3 373
  • 正文 我出身青樓球订,卻偏偏與公主長得像,于是被迫代替她去往敵國和親瑰钮。 傳聞我的和親對象是個殘疾皇子冒滩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,055評論 2 355

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

  • 內(nèi)容介紹模型融合是比賽后期一個重要的環(huán)節(jié),大體來說有如下的類型方式浪谴。 簡單加權(quán)融合: 回歸(分類概率):算術(shù)平均融...
    100MHz閱讀 184評論 0 0
  • 在本案例中使用的是Stacking融合方法开睡,簡單來說 stacking 就是當(dāng)用初始訓(xùn)練數(shù)據(jù)學(xué)習(xí)出若干個基學(xué)習(xí)器后...
    MackXu閱讀 299評論 0 0
  • 文章目錄1 回歸、分類概率融合1)簡單加權(quán)苟耻,結(jié)果直接融合2)Stacking融合(回歸) 2 分類模型融合1)Vo...
    醬油啊_閱讀 421評論 0 0
  • 模型融合是kaggle等比賽中經(jīng)常使用到的一個利器篇恒,它通常可以在各種不同的機(jī)器學(xué)習(xí)任務(wù)中使結(jié)果獲得提升凶杖。顧名思義胁艰,...
    憤怒的李小白閱讀 150評論 0 0
  • 表情是什么,我認(rèn)為表情就是表現(xiàn)出來的情緒智蝠。表情可以傳達(dá)很多信息腾么。高興了當(dāng)然就笑了,難過就哭了寻咒。兩者是相互影響密不可...
    Persistenc_6aea閱讀 125,115評論 2 7