💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在优快云上与你们相遇~💖
本博客的精华专栏:
【自动化测试】 【测试经验】 【人工智能】 【Python】
📊 Sklearn 机器学习数值离散化:指定区间实战指南
在机器学习项目中,我们经常遇到连续型数值特征(如年龄、收入等),而某些模型(如朴素贝叶斯、决策树)对离散型变量的表现更优。因此,“数值离散化”成为数据预处理中的重要一环。
本篇文章将深入讲解如何使用 Sklearn 的 KBinsDiscretizer
实现 指定自定义区间的数值离散化,解决你在项目中可能遇到的离散分箱难题 ✅
📌 一、什么是数值离散化?
数值离散化是将连续数值变量划分为若干有限个区间(bin),将其转换为类别型变量。常见的离散化方式有:
- 等宽分箱(uniform)
- 等频分箱(quantile)
- 基于聚类的分箱(kmeans)
- ✅ 自定义指定区间(手动控制 bin 边界)
🧠 二、为什么需要指定区间?
默认的 KBinsDiscretizer
提供了自动分箱策略,但在实际业务中,我们更常需要业务驱动的规则分箱,例如:
- 年龄:
[0-18, 19-35, 36-60, 60+]
- 收入等级:
[0-3000, 3000-7000, 7000-15000, 15000+]
这类分箱逻辑往往来源于领域知识或历史经验。
🔧 三、实战代码:使用 Pandas + Numpy 实现自定义区间离散化
Sklearn 的 KBinsDiscretizer
不支持手动指定 bin 边界,因此我们推荐使用 pandas.cut()
来实现。
✅ 示例:将收入按照业务定义区间离散化
import pandas as pd
# 模拟数据
data = pd