💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在优快云上与你们相遇~💖
本博客的精华专栏:
【自动化测试】 【测试经验】 【人工智能】 【Python】
🤖 Sklearn 机器学习:数值离散化 + 虚拟编码实战详解
在机器学习的特征工程中,数值型特征并不总是适合直接输入模型。尤其是树模型或分类模型时,**将连续变量进行离散化(分箱)+ 虚拟编码(独热编码)**是一种常见且高效的处理方式。
本文将结合 Sklearn
,从基础概念到完整代码演示,带你系统掌握这一预处理技巧 🚀
📊 一、数值离散化(Discretization)是什么?
数值离散化,又称为分箱(binning),是将连续数值划分为不同区间(bin):
- 将连续变量转化为离散变量
- 对树模型等非线性模型更友好
- 降低模型对异常值的敏感性
🎯 应用场景:
场景 | 例子 |
---|---|
年龄转分箱 | 将“年龄”分为:青少年(0-18)、青年(19-35)、中年(36-55)、老年(56+) |
收入分段 | 低收入、中等收入、高收入 |
🧠 二、虚拟编码(One-Hot Encoding)简介
离散化后的变量为分类变量,但模型无法直接理解文字类别。因此我们需要将它们编码为 数值型的独热向量(0/1),这就是:
✅ One-Hot Encoding(独热编码)
原始类别 | One-Hot 编码 |
---|---|
青少年 | [1, 0, 0, 0] |
中年 | [0, 0, 1, 0] |
🔧 三、Sklearn 实战:连续数值 → 分箱 → 虚拟编码
下面我们通过一个完整示例演示如何用 Sklearn
实现:
📌 示例目标:
- 用
KBinsDiscretizer
将age