[問題] LabelEncoder移除沒訓練過的data

看板Python作者 (【積π】)時間5年前 (2020/05/12 16:43), 編輯推噓2(204)
留言6則, 3人參與, 5年前最新討論串1/1
from sklearn import preprocessing le = preprocessing.LabelEncoder() le.fit(["paris", "paris", "tokyo", "amsterdam"]) print('class:{}'.format(list(le.classes_))) data1 = ["tokyo", "tokyo", "paris"] print(le.transform(data1)) data2 = ["tokyo", "tokyo", "paris", "USA", "Taiwan"] print(le.transform(data2)) ----------------輸出----------------- class:['amsterdam', 'paris', 'tokyo'] [2 2 1] ValueError: y contains previously unseen labels: ['Taiwan', 'USA'] 原因是因為Taiwin 跟 USA沒有訓練過 我想要在transform到未知的資料時移除該筆資料 該怎操作呢 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.242.44.65 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1589273036.A.E94.html

05/12 19:04, 5年前 , 1F
先filter掉再transform?
05/12 19:04, 1F

05/13 13:14, 5年前 , 2F
無法得知哪些東西沒出現過
05/13 13:14, 2F

05/13 13:21, 5年前 , 3F
data2=list(filter((lambda d: d in data1), data2))
05/13 13:21, 3F

05/13 13:32, 5年前 , 4F
data1修正成list(le.classes_) 假如你是要刪USA跟TW
05/13 13:32, 4F

05/13 13:39, 5年前 , 5F
假如是想刪data2,可能轉成set比較classes有沒有包含data,
05/13 13:39, 5F

05/13 13:39, 5年前 , 6F
true/false決定是否transform?
05/13 13:39, 6F
文章代碼(AID): #1Ukc7CwK (Python)
文章代碼(AID): #1Ukc7CwK (Python)