机器学习特征预处理之序号编码

示例

复制代码
from sklearn.preprocessing import OrdinalEncoder

def label_encoding(X_train, X_test, cat_cols):
    """标签编码(序号编码)"""
    encoder = OrdinalEncoder(handle_unknown='use_encoded_value', unknown_value=-1)
    X_train[cat_cols] = encoder.fit_transform(X_train[cat_cols])
    X_test[cat_cols] = encoder.transform(X_test[cat_cols])
    return X_train, X_test

调用示例

复制代码
# 导入必要的库
from sklearn.preprocessing import OrdinalEncoder
import pandas as pd

# 准备数据
X_train = pd.DataFrame({
    'color': ['red', 'blue', 'green', 'red'],
    'size': ['S', 'M', 'L', 'M']
})
X_test = pd.DataFrame({
    'color': ['red', 'yellow', 'blue'],
    'size': ['M', 'L', 'XL']  # 'XL' 是未知类别
})

cat_cols = ['color', 'size']

# 应用编码
X_train_encoded, X_test_encoded = label_encoding(X_train, X_test, cat_cols)

print("训练集编码后:\n", X_train_encoded)
print("测试集编码后:\n", X_test_encoded)
# 输出显示 'XL' 被编码为 -1

使用场景建议

适合使用该函数的情况:

  • 决策树、随机森林、XGBoost等树模型(对数值大小不敏感)

  • 有序分类特征

  • 类别数量极多(>100个)

  • 内存受限的环境

不适合使用该函数的情况:

  • 线性模型(如逻辑回归、SVM)

  • 神经网络(需要标准化处理)

  • 类别间无天然顺序关系

  • 对特征解释性要求高

对于encoder 的使用

复制代码
def label_encoding_fit(X_train, cat_cols):
    """训练时调用:返回编码后的数据和 encoder 实例"""
    encoder = OrdinalEncoder(handle_unknown='use_encoded_value', unknown_value=-1)
    X_train_encoded = X_train.copy()
    X_train_encoded[cat_cols] = encoder.fit_transform(X_train_encoded[cat_cols])
    return X_train_encoded, encoder

def label_encoding_transform(X, encoder, cat_cols):
    """推理时调用:加载 encoder 进行转换"""
    X_encoded = X.copy()
    X_encoded[cat_cols] = encoder.transform(X_encoded[cat_cols])
    return X_encoded
相关推荐
想会飞的蒲公英4 分钟前
PyTorch中SGD 与 Momentum 从零理解:给最朴素的优化器加上“惯性“
人工智能·pytorch·python·深度学习·机器学习
额恩666 分钟前
自然语言处理 NLP 入门与语言学基础
人工智能·自然语言处理
paopaokaka_luck6 分钟前
基于springboot3+vue3的乡村医生诊疗管理系统(AI助手、协同过滤算法、webSocket实时聊天、Echarts图形化分析)
前端·网络·人工智能·spring boot·websocket·网络协议·echarts
用户298698530148 分钟前
PDF 转图片?三种方案,覆盖全平台与自动化场景
人工智能·后端
Coffeeee9 分钟前
天天 AI Coding 的你,如果出去面试,你的竞争力是什么?
人工智能·程序员·ai编程
小飞猪。。15 分钟前
笔记十八:大模型 RLHF 系统工程实战笔记
人工智能·笔记
钱六两16 分钟前
Spring AI 使用 MCP 客户端(调用高德 MCP)
java·人工智能·spring
盈飞无限17 分钟前
AI智能SPC重构制程管控逻辑,打造质量硬核底座
大数据·人工智能·重构
qq_3651853121 分钟前
2026B 端工业抖音代运营公司测评:技术驱动破解制造企业获客困局
大数据·人工智能·物联网·制造
意图共鸣26 分钟前
意图共鸣科技 · 底色定调书
人工智能·microsoft