logo
Loading...

使用label encoder出現'<'not supported between instances of 'int' and 'str'錯誤 - Cupoy

為什麼HW裡在做label encoder時要改成df[c] = LEncoder.fit_tran...

ml100-2-d17,ml100-2

使用label encoder出現'<'not supported between instances of 'int' and 'str'錯誤

2019/05/17 下午 10:39
機器學習共學討論版
辛普恩
觀看數:8
回答數:2
收藏數:0
ml100-2-d17
ml100-2

為什麼HW裡在做label encoder時要改成df[c] = LEncoder.fit_transform(list(df[c].values))

我把它改成跟範例裡一樣df[c] = LEncoder.fit_transform(df[c])

會出現錯誤訊息,但我找不出原因是什麼?

回答列表

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

    同學您好, 

    這邊的寫法, 主要是因為上面的替換是"全部欄位"缺值補上 -1

    因為文字的缺值也補上-1, 做 LabelEncoder 時就像顯示文字與數字不能比大小(Error訊息內容)

    所以解法就是你要連同補缺以及他的一起改, 不然就是要一起不改

    也就是範例與作業的寫法只能二選一

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

    所以在做label encoder時,欄位的型態一定要是string 嗎?另外,編碼時為什麼要比大小,不是按照順序給編號?還是有特定的編號規則?


    => 是依照字串的比較給數字喔,可以參考這一篇:https://stackoverflow.com/questions/38749305/labelencoder-order-of-fit-for-a-pandas-df問問



    在做 LabelEncoder 的時候,可以自訂順序