模型擬合問題(model.fit)
不好意思各位專家們,這一章我真的搞不懂在做什麼........因此有許多問題希望專家們幫忙解答,不然我真的覺得在看天書,問題如下:
一.
二.
三.
回答列表
-
2019/10/01 下午 04:02Yu Chen Lin贊同數:0不贊同數:0留言數:0
另外:為什麼作業裡隨機森林就不用加上[:,:,0]???這又差在哪裡..........
-
2019/10/03 下午 01:00陳明佑 (Ming You Chen)贊同數:1不贊同數:2留言數:1
這些程式是參照 sklearn 的官方範例改寫的
如果這樣讀得很辛苦, 那麼在網路上的範例程式也會看得有點辛苦喔
然後一個問題裡面, 請盡量不要一次放太多小題
這樣會增加自己與別人閱讀的難度
專家回答也會很辛苦, 期望你能理解
先回答問題 :
Ans.一(1+2+3+下方額外提問)
apply完後, 得到的是原始資料使用這個模型預測後, 每顆樹的標籤結果
就像教材中提到的, 是樹葉的號碼
假如有100棵樹, 輸出的結果就是這些資料在100棵樹中, 分別落在哪個葉點
一筆資料經過100棵樹, 就會輸出100個葉點標籤
n筆資料, 就會輸出 nx100的 array
不同的是, 隨機森林每個葉點直接預測分類, 所以apply後只有 nx100 (下方問題)
但梯度提升樹預測的是每一類的機率, 所以apply後會是 nx100x類別數
然後 onehot 只取第一個, 是因為這是二元分類,
預測0與1的樹完全一樣, 取一邊就好
(後面的1+2)
資料集的train與test要不同, 就像考試準備的題目與真正考題要不同
因為前面的 GBDT 已經把 train_X 拿來訓練
後面訓練 Logistc 就不能再拿 onehot 後的 train_X 拿來訓練,
因為train_X的資訊已經存在模型內了
這就像為了一個大考, 你準備了兩次模擬考,
但兩次模擬考的題目相同
那這樣就沒有兩次模擬考的效果了
所以在做葉編碼時, 需要把資料切成 train, valid, test 三段比較合理
Ans二
只要是sklearn分類預測模型, 輸出pred_proba就會對每個類別分別預估機率
輸出的是 "資料筆數x類別數" 所以是二維陣列(你可以print部分出來看看)
Ans三
資料較適合的時候, GBDT+LR 的效果會比 GBDT 效果還要好(請參看原始程式的圖)
範例這邊因為資料比較沒那麼適合葉編碼, 所以兩個曲線並沒有顯著差異
-
2019/10/04 下午 05:49林逸杰贊同數:0不贊同數:0留言數:0
我也是看不懂圖,但wiki的解釋還算清楚,供你參考