首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用可能看不见的数据进行标签编码

使用可能看不见的数据进行标签编码
EN

Stack Overflow用户
提问于 2020-10-13 17:06:17
回答 3查看 613关注 0票数 2

我有一个包含多个列的数据帧,需要对这些列进行标签编码。问题是,测试组可能会在未来包含看不到的数据(类)。我希望这些类被标记为它们自己的一组,这样当我预测新的数据集时,代码就不会崩溃。

我尝试使用sklearn labelencoder,但收到了。

代码语言:javascript
运行
复制
ValueError: y contains previously unseen labels: 'rat'

我还需要编码器是可重用的,这意味着我将能够使用相同的值对未来的数据集进行编码。

有没有办法做到这一点?

EN

回答 3

Stack Overflow用户

发布于 2020-10-13 19:18:06

我曾多次遇到过同样的困难。

不过,我的变通方法有点昂贵。

代码语言:javascript
运行
复制
le=LabelEncoder()
le.fit(trainDf)

le.classes_=np.array([-99999] + le.classes_.tolist())
testDf[~testDf.isin(le.classes_)]=-99999 #anything that is not used in your dataframe and the same datatype (here int64)

le.transform(testDf)
票数 1
EN

Stack Overflow用户

发布于 2020-10-14 03:18:48

我稍微更新了一下Sayan Dey's的想法:

步骤1:对标签编码器中存在的类进行标签编码。步骤2:安装标签编码器,然后将测试中不在编码器中的所有类别设置为-1 \f25-1\f6。

代码语言:javascript
运行
复制
i='browser'
le = LabelEncoder()
train[i] = le.fit_transform(train[i])
#Set classes in test which don't exist in the encoder to -1
test.loc[~test[i].isin(le.classes_),i] = -1    
#Encode classes that exist in the encoder
test.loc[test[i].isin(le.classes_),i] = le.transform(test[i][test[i].isin(le.classes_)])
票数 1
EN

Stack Overflow用户

发布于 2020-10-13 17:35:44

可以使用scikit来解决-学习是使用带有参数handle_unknown='ignore'的类OneHotEncoder

代码语言:javascript
运行
复制
from sklearn.preprocessing import OneHotEncoder

encoder = OneHotEncoder(handle_unknown='ignore')
encoder.fit(train)

encoder.transform(train)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64332071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档