当前位置: 首页 > news >正文

【大白话数据分析】搞懂这三种神仙编码(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用除去自己外的平均目标值类别之间差异大,想提升精度“看看大家都考多少分” (但不准看自己的)

http://www.jsqmd.com/news/144156/

相关文章:

  • Yarn Lock文件解析:依赖管理与版本锁定
  • 为什么说Open-AutoGLM的数据处理流程存在合规风险(附解决方案)
  • 国产AI手机新纪元(Open-AutoGLM硬件全解析)
  • 西安二手房装修公司推荐:五大装企标星测评,榜首实至名归! - 深度智识库
  • 【稀缺资源】Open-AutoGLM内部使用文档首次公开
  • unordered_map/set 的封装与迭代器实现 —— 从底层到上层的完美衔接
  • Open-AutoGLM是否存在数据泄露隐患:3大安全挑战与应对方案详解
  • 手机刷入Open-AutoGLM完整教程(从解锁到刷机一站式解决)
  • 求你别写死了,SpringBoot 写死的定时任务也能动态设置,爽~
  • Open-AutoGLM源码实战应用,5个真实场景教你打造专属智能Agent
  • 专科生必看!9个高效降AIGC工具推荐,轻松应对AI检测
  • 2025年最受欢迎的苗木批发基地盘点,无刺枸骨球/红叶石楠/丝棉木/金森女贞/国槐/樱花/金叶复叶槭/苗木苗木批发基地批发商推荐排行榜单 - 品牌推荐师
  • 探索SGLang + Qwen2-7B-Instruct 在_Atlas 800T 的推理调优
  • 2026重庆儿童学习障碍干预去哪家医院好?这份口碑与效果双优的选择攻略请收好 - 品牌2026
  • 【大模型开发必看】Open-AutoGLM源码剖析:3步实现智能推理链自动生成
  • Open-AutoGLM开源地址找不到?资深AI工程师亲授3种精准定位方法
  • 手把手教你开启智谱清言沉思模式,这6个参数设置必须精准到位
  • Numpy入门详细教程:核心用法一网打尽
  • C语言读取文本中的图像数据转为BMP
  • python小区物业管理系统_2oma5
  • 学长亲荐9个AI论文软件,研究生搞定毕业论文不求人!
  • 2025年高性价比的互联网推广企业推荐,互联网推广老牌公司全解析 - mypinpai
  • 全球钢丝绳市场:中国领跑下的结构性变革与新兴机遇
  • 2025年度环保无动力雨水净化系统十大品牌排行榜 - 工业品网
  • Exchange 2007 属性参考指南
  • 三步搭建“钉钉待办推送” (curl版)
  • 揭秘智谱Open-AutoGLM核心架构:5步实现本地高效部署与调优
  • python智能停车场车位租赁管理系统vue
  • Yarn Lockfile 分析与依赖管理
  • 常见文件格式转国产ofd案例,支持pdf、word、txt;