logo
Loading...

對某欄位作LabelEncoding後其他欄位的相關度都提高了,是為什麼? - Cupoy

在D30的實作作業中我先對想作群聚編碼的column作了Label Encoding但在這當中我觀察...

ml100-3,ml100-3-d30

對某欄位作LabelEncoding後其他欄位的相關度都提高了,是為什麼?

2019/09/30 上午 00:18
機器學習共學討論版
Ma Chao Ting
觀看數:59
回答數:2
收藏數:1
ml100-3
ml100-3-d30

在D30的實作作業中

我先對想作群聚編碼的column作了Label Encoding

但在這當中我觀察到所有欄位的目標特徵的相關度都變高了

代碼如下:

print(df2.corr())

# 取一個類別型欄位, 與一個數值型欄位, 做群聚編碼

gby = 'Sex'

gbyV = 'Age'

# 對照組 : 標籤編碼 + 邏輯斯迴歸

df2[gby] = df2[gby].fillna('None')

df2[gby + '_Lab'] =  LabelEncoder().fit_transform(df2[gby])

df2[df2[gbyV].isnull()] = df2[gbyV].mean()

print(df2.corr())


回傳:

想請教這是為何??

回答列表

  • 2019/09/30 上午 00:49
    張維元 (WeiYuan)
    贊同數:0
    不贊同數:0
    留言數:1

    你這行做了什麼?


    ```

    df2[df2[gbyV].isnull()] = df2[gbyV].mean()

    ```

  • 2019/10/01 下午 01:15
    陳明佑 (Ming You Chen)
    贊同數:0
    不贊同數:0
    留言數:1

    再這個資料當中, 確實會有這個情況

    仔細推敲後, 應該是資料存放的順序, 是依照是否生存的順序排列

    如此雖然拿掉 target 的值, 你用 Label Encoding 效果就會變超好

    這個可以算得上是一種 Leakage


    如果是競賽, 碰上這種問題就先拿高分再說

    但如果資料集是自己收集的, 或者你不希望這種有 leakage的結果

    那就建議先用下列兩行, 把資料打亂再行預測即可

    from sklearn.utils import shuffle
    df = shuffle(df)