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')
相关推荐
lbb 小魔仙5 小时前
【Python】零基础学 Python 爬虫:从原理到反爬,构建企业级爬虫系统
开发语言·爬虫·python
光锥智能5 小时前
CES观察|AI硬件迎来黄金时代,中国机器人“进场打工”
人工智能
九河云5 小时前
数据驱动未来,华为云DWS为智能决策提速
大数据·人工智能·安全·机器学习·华为云
黄河里的小鲤鱼5 小时前
拯救草台班子-战略
人工智能·python·信息可视化
qq_411262425 小时前
DAB加ai加蓝牙音箱有市场吗
人工智能
华清远见成都中心5 小时前
机器学习怎么学?
人工智能·机器学习
碎碎思5 小时前
在 FPGA 上实现并行脉冲神经网络(Spiking Neural Net)
人工智能·深度学习·神经网络·机器学习·fpga开发
Dr.Alex Wang5 小时前
Google Firebase 实战教学 - Streamlit、Bucket、Firebase
数据库·python·安全·googlecloud
小二·5 小时前
Python Web 全栈开发实战教程:基于 Flask 与 Layui 的待办事项系统
前端·python·flask
FONE_Platform5 小时前
能源化工行业全面预算解决方案:重塑双碳目标下的财务新动能
大数据·人工智能