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')
相关推荐
冰西瓜6003 小时前
从项目入手机器学习——鸢尾花分类
人工智能·机器学习·分类·数据挖掘
爱思德学术3 小时前
中国计算机学会(CCF)推荐学术会议-C(人工智能):IJCNN 2026
人工智能·神经网络·机器学习
偶信科技3 小时前
国产极细拖曳线列阵:16mm“水下之耳”如何撬动智慧海洋新蓝海?
人工智能·科技·偶信科技·海洋设备·极细拖曳线列阵
在屏幕前出油4 小时前
二、Python面向对象编程基础——理解self
开发语言·python
Java后端的Ai之路4 小时前
【神经网络基础】-神经网络学习全过程(大白话版)
人工智能·深度学习·神经网络·学习
庚昀◟4 小时前
用AI来“造AI”!Nexent部署本地智能体的沉浸式体验
人工智能·ai·nlp·持续部署
阿方索4 小时前
python文件与数据格式化
开发语言·python
喜欢吃豆4 小时前
OpenAI Realtime API 深度技术架构与实现指南——如何实现AI实时通话
人工智能·语言模型·架构·大模型
数据分析能量站4 小时前
AI如何重塑个人生产力、组织架构和经济模式
人工智能
wscats5 小时前
Markdown 编辑器技术调研
前端·人工智能·markdown