news 2026/3/3 9:12: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/2/22 22:51:08

Java 小白面试记:从Spring Boot到大数据处理

文章内容 场景: 在一家知名的互联网大厂,Java小白程序员超好吃正在接受面试。面试官以严肃的态度开始了提问。 第一轮提问:Web框架与微服务 面试官:请你谈谈在Spring Boot中如何实现一个简单的RESTful API? 超好吃&…

作者头像 李华
网站建设 2026/3/1 7:24:10

**手机写小说软件哪家靠谱2025推荐,适配不同创作场景的实

手机写小说软件哪家靠谱2025推荐,适配不同创作场景的实战指南在2025年,移动端创作已成为内容创作者的常态。据《2025中国网络文学发展报告》显示,超过68%的网文作者会使用手机进行碎片化创作或灵感记录,但其中52%的用户面临工具功…

作者头像 李华
网站建设 2026/2/24 16:24:54

Open-AutoGLM沉思模式打不开?20年经验专家教你7个关键步骤精准触发

第一章:Open-AutoGLM沉思模式的技术背景与核心价值在大模型驱动的智能系统演进中,传统推理模式面临响应僵化、逻辑链断裂等挑战。Open-AutoGLM沉思模式应运而生,旨在通过模拟人类“深思—验证—修正”的认知过程,提升模型在复杂任…

作者头像 李华
网站建设 2026/2/27 19:28:19

Open-AutoGLM能在家用电脑部署吗:5步完成本地化部署实测指南

第一章:Open-AutoGLM开源部署操作电脑可以吗Open-AutoGLM 是一个基于 AutoGLM 架构的开源项目,旨在为本地化大模型推理与微提供轻量化部署方案。得益于其模块化设计和对消费级硬件的优化,用户完全可以在普通个人电脑上完成项目的部署与运行。…

作者头像 李华
网站建设 2026/2/28 9:45:03

【Open-AutoGLM数据安全深度剖析】:揭秘AI大模型潜在风险与防护策略

第一章:Open-AutoGLM有没有数据安全问题数据本地化与传输加密机制 Open-AutoGLM 作为开源的自动化代码生成模型,其核心优势之一是支持本地部署。用户可在私有环境中运行模型,避免敏感代码上传至第三方服务器。所有输入输出数据均保留在本地&a…

作者头像 李华
网站建设 2026/2/27 18:42:33

TPAMI‘25 | 首个多轮、开放视角视频问答基准,系统分类9大幻觉任务

基准WildVideo针对多模态模型在视频问答中的「幻觉」问题,首次系统定义了9类幻觉任务,构建了涵盖双重视角、支持中英双语的大规模高质量视频对话数据集,采用多轮开放问答形式,贴近真实交互场景,全面评估模型能力。近年…

作者头像 李华