logo
Loading...

Day30 切分train test 及結果輸出的程式碼 - Cupoy

1. 切分train test 這段  這兩行的黃色部分的 train_X 代表相同的資料嗎    ...

將梯度提升樹結果輸出pred_gdbt,ml100-2,ml100-2-d30

Day30 切分train test 及結果輸出的程式碼

2019/05/18 上午 00:16
機器學習共學討論版
cathyy
觀看數:17
回答數:2
收藏數:0
將梯度提升樹結果輸出pred_gdbt
ml100-2
ml100-2-d30

1. 切分train test 這段  這兩行的黃色部分的 train_X 代表相同的資料嗎 

      又為何要採用 test 驗證而非 k-fold 交叉驗證呢?


train_X , test_X, train_Y, test_Y = train_test_split(train_X, train_Y, test_size=0.5)

train_X , val_X, train_Y, val_Y = train_test_split(train_X, train_Y, test_size=0.5)




2. 結果輸出 這段  為什麼逗號後面 黃色部分的底線是代表甚麼意思?


# 將梯度提升樹+葉編碼+邏輯斯迴歸結果輸出

pred_gdbt_lr = lr.predict_proba(onehot.transform(gdbt.apply(test_X)[:, :, 0]))[:, 1]

fpr_gdbt_lr, tpr_gdbt_lr, _ = roc_curve(test_Y, pred_gdbt_lr)

# 將梯度提升樹結果輸出

 pred_gdbt = gdbt.predict_proba(test_X)[:, 1]

fpr_gdbt, tpr_gdbt, _ = roc_curve(test_Y, pred_gdbt)

回答列表

  • 2019/05/20 上午 11:54
    陳明佑 (Ming You Chen)
    贊同數:
    不贊同數:
    留言數:

    Ans1. 不一樣的資料

    程式開始前的 train_X 是全部的 train 資料

    第一行開頭的 train_X, 因為是接收 train_test_split 傳回的結果, 所以只剩原本 train 的一半

    第二行開頭的 train_X 同理, 因為是一半的一半, 就只剩原本的四分之一了

    就傳統程式常見的 x = x+1, 左邊的 x 是傳回值, 右邊的 x 是這行程式執行前的 x (輸入值)


    Ans2. 這是忽略該項輸出的慣用寫法

    各種語言都有慣用寫法, Python 也不例外

    例如 fpr_gdbt_lr, tpr_gdbt_lr,_= roc_curve(test_Y, pred_gdbt_lr) 表示 roc_curve() 有三個輸出值

    而今天我們只想用前面兩個, 就將前兩個命名, 讓他傳回資料,

    至於第三個值, 給他取其他變數名稱並不會違反 Python 語法, 

    但是如果取 "_" 當變數名稱, 就能提醒閱讀程式碼的人 : 這個變數後面不會使用

    藉此增加程式的可讀性, 習慣後會覺得很便利的

  • 2019/05/21 下午 02:24
    張維元 (WeiYuan)
    贊同數:0
    不贊同數:0
    留言數:0

    1. 切分train test 這段  這兩行的黃色部分的 train_X 代表相同的資料嗎 

         又為何要採用 test 驗證而非 k-fold 交叉驗證呢?


    => 可以參考這個圖: