sklearn的LabelEncoder 遇到新值的解决办法

问题:sklearn的LabelEncoder函数遇到新值报错

sklearn的LabelEncoder函数,在fit结束后,对dataframe数据进行transform的时候,如果遇到了没在fit时编码规则里的新值,会出现代码报错,不同于spark的LabelEncoder碰到新值会给你编成len+1。

解决办法:基于编码规则的修改

1、保存编码字典

复制代码
from sklearn.preprocessing import LabelEncoder

le = preprocessing.LabelEncoder()
le.fit(X)

# label编码其实就是映射的字典,将编码字典保存
le_dict = dict(zip(le.classes_, le.transform(le.classes_)))

2、数据判断

检索单个新项目的标签,如果项目丢失,则将值设置为未知

复制代码
le_dict.get(new_item, 'Unknown')

3、批量检索 Dataframe 列的标签

复制代码
df['col'] = df['col'].apply(lambda x: le_dict.get(x, 'Unknown'))

# 再将新值删除
df = df[df['col'] != 'Unknown']
df['col'] = df['col'].astype(dtype='int64')
相关推荐
咚咚王者41 分钟前
人工智能之数据分析 numpy:第十章 副本视图
人工智能·数据分析·numpy
Dev7z43 分钟前
让阅卷不再繁琐:图像识别与数据分析提升智能答题卡评分效率
人工智能·计算机视觉
咚咚王者44 分钟前
人工智能之数据分析 numpy:第十一章 字符串与字节交换
人工智能·数据分析·numpy
数字孪生家族3 小时前
视频孪生与空间智能:重构数字时空认知,定义智能决策新范式
人工智能·重构·空间智能·视频孪生与空间智能
FL171713144 小时前
Pytorch保存pt和pkl
人工智能·pytorch·python
jieshenai4 小时前
5090显卡,基于vllm完成大模型推理
人工智能·自然语言处理
逻极5 小时前
云智融合:AIGC与云计算服务新范式(深度解析)
人工智能·云计算·aigc·云服务
爱学习的小道长6 小时前
进程、线程、协程三者的区别和联系
python·ubuntu
雪兽软件6 小时前
人工智能(AI)的商业模式创新路线图
人工智能