使用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 的時候,可以自訂順序