作者ctr1 (【积π】)
看板Python
标题[问题] LabelEncoder移除没训练过的data
时间Tue May 12 16:43:54 2020
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://webptt.com/cn.aspx?n=bbs/Python/M.1589273036.A.E94.html
1F:推 TitanEric: 先filter掉再transform? 05/12 19:04
2F:→ ctr1: 无法得知哪些东西没出现过 05/13 13:14
3F:推 eooft: data2=list(filter((lambda d: d in data1), data2)) 05/13 13:21
4F:→ eooft: data1修正成list(le.classes_) 假如你是要删USA跟TW 05/13 13:32
5F:→ eooft: 假如是想删data2,可能转成set比较classes有没有包含data, 05/13 13:39
6F:→ eooft: true/false决定是否transform? 05/13 13:39