news 2026/6/10 22:18:41

【大白话数据分析】搞懂这三种神仙编码(OE/QE/LOOE) + 随机森林,模型精度直接起飞![特殊字符]

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【大白话数据分析】搞懂这三种神仙编码(OE/QE/LOOE) + 随机森林,模型精度直接起飞![特殊字符]

🌞欢迎来到数据分析的世界
🌈博客主页:卿云阁

💌欢迎关注🎉点赞👍收藏⭐️留言📝

🌟本文由卿云阁原创!

🌠本阶段属于练气阶段,希望各位仙友顺利完成突破

📆首发时间:🌹2025年12月20日🌹

✉️希望可以和大家一起完成进阶之路!

🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢!


目录

引入

为什么不能直接填数字?

🍌 选手一:OE (Ordinal Encoder) —— 简单粗暴的“排号员”

📊 选手二:QE (Quantile Encoder) —— 看人下菜碟的“分段王”

🔥 选手三:LOOE (Leave-One-Out Encoder) —— 防作弊的“超级翻译”

🌲 最佳搭档:RF (Random Forest 随机森林)

💻 代码实战(Python版)

📝 总结

引入

做数据挖掘或者机器学习的同学都知道,模型(Model)其实是个“偏科生”。它数学很好,但语文

极差——它只认识数字,根本不认识汉字或英文单词!

所以,当我们拿到一份包含“性别(男/女)”、“城市(北京/上海)”、“原料(猪粪/秸秆)”这样的数

据时,第一步必须做的事就是:当翻译官!

把这些文字“翻译”成数字,这个过程就叫编码(Encoding)

今天我们就用最接地气的方式,聊聊三种超好用的编码方式:OEQELOOE,以及它们的好搭档随机森林(RF)


1. 为什么不能直接填数字?

很多人想:“这还不简单?男=1,女=2;北京=1,上海=2,广州=3。”

这就引出了第一种编码方式。

🍌 选手一:OE (Ordinal Encoder) —— 简单粗暴的“排号员”

就是给每个类别发个号牌。

比如:[小学, 初中, 高中, 大学]

OE编码后变成:[1, 2, 3, 4]

这种方式非常的简单,省内存。非常适合有“等级关系”的数据(比如学历、尺码 S/M/L)。因为

4>3>2>1,正好对应 大学>高中>初中>小学,模型能理解这种“越来越大”的关系。但是对于没有等

级关系的数据,它会“误导”模型。比如:[苹果, 香蕉, 西瓜] 变成 [1, 2, 3]。模型会以为“西瓜(3) 比

苹果(1) 大/高级”,但其实它们只是不同的水果而已。这时候用 OE 就不太好了。

📊 选手二:QE (Quantile Encoder) —— 看人下菜碟的“分段王”

这个稍微高级一点。它不是随便给个号,而是根据这个特征对应的**目标值(Target,也就是你

要预测的结果)的表现来打分。假设我们要预测”房价”,特征是“地段”。

OE做法:一环=1,二环=2...

QE做法:它不看你是几环,它看这里的房子大部分卖多少钱。

它会把所有地段按房价排序。

房价最低的那一拨地段(比如后25%),编码为 1。

房价中等的那一拨(中间50%),编码为 2。

房价最高的那一拨(前25%),编码为 3。

它的核心逻辑:“我不关心你叫什么名字,我只关心你属于哪个档次。”这能很好地处理异常值,把

数据变得更平滑。

🔥 选手三:LOOE (Leave-One-Out Encoder) —— 防作弊的“超级翻译”

这是很多高分论文(包括很多 Kaggle 比赛)里的秘密武器。

它也是一种目标编码(Target Encoding),也就是用“结果”来代表“特征”。

我们要预测一个学生期末考试能考多少分,特征是“所在的班级”。

如果直接用这个班的平均分来代表这个班级,行不行?

比如 1班平均分90,那就把“1班”编码成 90。

问题:如果在训练的时候,你把这个学生自己的分数也算进平均分里了,这不就是作弊吗?(模型

会直接“记住”答案,而不是学习规律)。

LOOE 的神操作(Leave-One-Out = 留一法):

计算“1班”的编码值时,把你(当前样本)的分数拿掉,只算1班其他所有人的平均分,作为你的

编码值。优点:既利用了“这个类别通常很强”的高级信息,又完美避开了“自己预测自己”的作弊嫌

疑。准确率通常比 OE 高一大截!


🌲 最佳搭档:RF (Random Forest 随机森林)

把数据用上面三种方法编码好(变成数字)后,就可以喂给模型了。在这个组合里,随机森林

是个绝佳的选择。随机森林就是“三个臭皮匠,顶个诸葛亮”的究极版。

它种了很多棵决策树(Expert)。来了一个新数据,每棵树都通过上面的编码数字进行判断,给出

自己的预测。最后,随机森林把所有树的结果取平均(回归问题)或者投票(分类问题)。

为什么它和编码是绝配?

刚才 OE 编码里提到的“苹果(1) vs 西瓜(3)”的误导问题,随机森林通过大量的树和随机性,能一

定程度上消化掉这种误差。你不需要把数字缩放到 0-1 之间,随机森林不挑食,直接喂刚才编码好

的 1, 90, 513 这种数字,它照样吃得香。


💻 代码实战(Python版)

import pandas as pd from sklearn.ensemble import RandomForestRegressor from category_encoders import OrdinalEncoder, LeaveOneOutEncoder, QuantileEncoder from sklearn.model_selection import train_test_split # 1. 准备数据 (假装这是你的实验数据) data = pd.DataFrame({ '底物类型': ['猪粪', '秸秆', '餐厨', '猪粪', '餐厨', '秸秆'], # 分类特征 '温度': [35, 37, 55, 35, 55, 37], '产气量': [100, 120, 500, 110, 520, 130] # 目标变量 (y) }) X = data[['底物类型', '温度']] y = data['产气量'] # 2. 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # ================= 核心:编码三剑客 ================= # --- 方式 A: OE (简单排号) --- # oe = OrdinalEncoder(cols=['底物类型']) # X_train_enc = oe.fit_transform(X_train) # X_test_enc = oe.transform(X_test) # --- 方式 B: LOOE (留一法,推荐!) --- # 注意:LOOE 训练时必须传入 y_train,因为它要算平均值! looe = LeaveOneOutEncoder(cols=['底物类型']) X_train_enc = looe.fit_transform(X_train, y_train) X_test_enc = looe.transform(X_test) # 测试集直接用训练集算好的规则 print("编码后的数据长这样:") print(X_train_enc) # ================= 核心:随机森林建模 ================= # 3. 召唤随机森林 rf = RandomForestRegressor(n_estimators=100, random_state=42) # 4. 训练 (喂入编码后的数据) rf.fit(X_train_enc, y_train) # 5. 预测 preds = rf.predict(X_test_enc) print(f"预测结果: {preds}")
📝 总结
编码方式核心逻辑适合场景比喻
OE按顺序编号有等级关系的数据 (大/中/小)排队发号牌
QE按目标值的分布分档需要减少噪音、处理异常值划分“优良中差”等级
LOOE用除去自己外的平均目标值类别之间差异大,想提升精度“看看大家都考多少分” (但不准看自己的)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:32:01

你还在手写Prompt?Open-AutoGLM源码揭示自动GLM调优的秘密路径

第一章:你还在手写Prompt?Open-AutoGLM源码揭示自动GLM调优的秘密路径告别手动调参:自动化Prompt优化的兴起 随着大语言模型(LLM)在实际应用中的普及,手动编写和调试Prompt已成为效率瓶颈。Open-AutoGLM 作…

作者头像 李华
网站建设 2026/6/10 12:26:00

攻克阻塞难题与闭环构建-凤希AI伴侣-2025年12月26日

💡 思考与发现当前系统底层设计在某些交互逻辑上存在优化空间,例如消息处理机制。虽然通过延迟异步任务的方式解决了MessageBox对话框导致的程序退出问题,但这更像是一种“补丁式”解决方案。从长远看,底层消息队列和处理流程的重…

作者头像 李华
网站建设 2026/6/10 12:38:34

PDCA四阶段八步骤实战解析与应用案例

PDCA四阶段八步骤实战解析与应用案例 在人工智能工程落地的过程中,技术本身的先进性往往不是决定成败的关键。真正让一个AI系统从“能跑”走向“好用”,再到“可靠”的,是一套科学、可复现的管理方法论。腾讯混元OCR(HunyuanOCR&a…

作者头像 李华
网站建设 2026/6/10 10:57:25

北斗三号B1C与B2a信号设计及接收技术解析

lora-scripts:开箱即用的 LoRA 训练自动化工具实践指南 在生成式 AI 快速落地的今天,如何让大模型真正“懂行”、贴合业务场景,已成为开发者面临的核心挑战。Stable Diffusion 能画出惊艳图像,但要让它稳定输出企业品牌风格&#…

作者头像 李华
网站建设 2026/6/10 12:35:35

Open-AutoGLM能否颠覆AI开发范式?:来自官方技术白皮书的5大关键洞察

第一章:Open-AutoGLM能否颠覆AI开发范式?Open-AutoGLM 作为新一代开源自动机器学习框架,正引发AI开发领域的广泛关注。其核心理念是将自然语言指令直接转化为可执行的机器学习流水线,极大降低了建模门槛,同时提升了开发…

作者头像 李华
网站建设 2026/6/10 3:52:46

史上最全PID图例解析,化工人必备!

化工人手一张的“作战地图”:彻底搞懂PID图 在化工厂里,最怕什么? 不是设备轰鸣,不是高温高压,而是——图纸拿错了。 一张正确的PID图,能让操作工在紧急时刻迅速切断危险源;而一张过时或误读的图…

作者头像 李华