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')
相关推荐
coderCatIce7 分钟前
刘二大人第2讲-线性模型-带代码以及作业答案
人工智能·机器学习
帅夫帅夫8 分钟前
Vibe Coding从零开始教你打造一个WebLLM页面
前端·人工智能
抽风的雨6108 分钟前
【python深度学习】Day 45 Tensorboard使用介绍
人工智能·深度学习
红衣信16 分钟前
探索 DeepSeek:智能前端与大模型的碰撞
前端·人工智能·llm
Hockor20 分钟前
写给前端的 Python 教程三(字符串驻留和小整数池)
前端·后端·python
姚瑞南20 分钟前
【Prompt实战】国际翻译小组
人工智能·prompt·gpt-3·文心一言·机器翻译
网安小张23 分钟前
解锁FastAPI与MongoDB聚合管道的性能奥秘
数据库·python·django
GeekAGI23 分钟前
Python 定时器框架
python
Jamence41 分钟前
多模态大语言模型arxiv论文略读(109)
论文阅读·人工智能·语言模型·自然语言处理·论文笔记