Day30 切分train test 及結果輸出的程式碼
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 交叉驗證呢?
=> 可以參考這個圖: