Python OneHot编码怎么实现?Python中OneHotEncoder用法详解

在 Python 中,One-Hot Encoding(独热编码)是一种将分类变量转换为数值型变量的常用技术,它将每个类别映射为一个二进制向量,其中只有一个元素为 1,其余为 0。

以下是几种常用的实现方法:

【帅器学习/子力】OneHot编码
加载中
【帅器学习/子力】OneHot编码

使用 sklearn.preprocessing.OneHotEncoder(推荐用于机器学习)

这是最常用且功能强大的方法,特别适用于机器学习管道。

import numpy as np
from sklearn.preprocessing import OneHotEncoder
# 示例数据
data = np.array([['男'], ['女'], ['女'], ['男'], ['未知']])
# 初始化 OneHotEncoder
encoder = OneHotEncoder(sparse_output=False)  # sparse_output=False 返回密集数组
# 拟合并转换数据
one_hot_encoded = encoder.fit_transform(data)
print("独热编码结果:")
print(one_hot_encoded)
print("特征名称:", encoder.get_feature_names_out())

输出:

独热编码结果:
[[1. 0. 0.]
 [0. 1. 0.]
 [0. 1. 0.]
 [1. 0. 0.]
 [0. 0. 1.]]
特征名称: ['x0_男' 'x0_未知' 'x0_女']

注意:在较新版本的 scikit-learn 中,sparse_output

Python OneHot编码怎么实现?Python中OneHotEncoder用法详解

参数替代了旧的 sparse 参数。


使用 pandas.get_dummies()(推荐用于数据分析)

如果你在使用 Pandas 进行数据处理,get_dummies 是最简洁的方法。

import pandas as pd
# 示例数据
df = pd.DataFrame({
    'gender': ['男', '女', '女', '男', '未知']
})
# 进行独热编码
df_encoded = pd.get_dummies(df, columns=['gender'], prefix='gender')
print(df_encoded)

输出:

  gender_男  gender_女  gender_未知
0       1        0            0
1       0        1            0
2       0        1            0
3       1        0            0
4       0        0            1

使用 numpy.eyenp.unique(纯 NumPy 实现)

适用于没有引入 sklearn 或 pandas 的轻量级场景。

import numpy as np
categories = np.array(['男', '女', '女', '男', '未知'])
# 获取所有唯一类别并排序
unique_categories = np.unique(categories)
# 创建独热编码矩阵
# np.eye 创建一个单位矩阵,索引对应类别在 unique_categories 中的位置
one_hot = np.eye(len(unique_categories))[np.searchsorted(unique_categories, categories)]
print(one_hot)

Python OneHot编码怎么实现?Python中OneHotEncoder用法详解

输出:

[[1. 0. 0.]
 [0. 1. 0.]
 [0. 1. 0.]
 [1. 0. 0.]
 [0. 0. 1.]]

手动实现(理解原理)

def one_hot_encode(labels, classes=None):
    """
    手动实现独热编码
    :param labels: 标签列表或数组
    :param classes: 预定义的类别列表(可选)
    :return: 独热编码矩阵
    """
    if classes is None:
        classes = sorted(set(labels))  # 自动获取所有唯一类别并排序
    class_to_index = {cls: idx for idx, cls in enumerate(classes)}
    n_classes = len(classes)
    one_hot = np.zeros((len(labels), n_classes))
    for i, label in enumerate(labels):
        if label in class_to_index:
            one_hot[i, class_to_index[label]] = 1
        else:
            raise ValueError(f"类别 '{label}' 不在预定义类别中")
    return one_hot, classes
labels = ['男', '女', '女', '男', '未知']
encoded, classes = one_hot_encode(labels)
print("编码结果:n", encoded)
print("类别:", classes)

Python OneHot编码怎么实现?Python中OneHotEncoder用法详解


选择建议

方法 适用场景 优点
OneHotEncoder 机器学习建模、Pipeline 支持稀疏矩阵、可保存模型、处理新类别方便
get_dummies 数据探索、统计分析 代码简洁、与 Pandas 无缝集成
numpy 手动实现 学习原理、无第三方库依赖 轻量、透明度高

注意事项

  1. 类别顺序:确保训练集和测试集的类别顺序一致,否则会导致特征错位。
  2. 新类别处理:在 OneHotEncoder 中,如果测试数据出现训练时未见过的类别,默认会报错,可通过设置 handle_unknown='ignore' 来解决。
  3. 内存使用:独热编码会增加特征维度,对于高基数类别(如用户ID),建议使用目标编码(Target Encoding)或嵌入(Embedding)。

希望这些示例对你有帮助!

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/479568.html

(0)
Excel概率怎么算?Excel概率计算公式及方法
上一篇 2026年7月10日 10:13
H5本地数据库到底存在哪?详解H5本地数据库存储位置
下一篇 2026年7月10日 10:15

相关推荐

  • 全面服务器监控统计表配置优化技巧 | 如何设置高效监控统计表? – 服务器监控

    服务器监控统计表是IT运维团队洞察服务器运行状态、保障业务连续性的核心工具,它通过系统性地采集、汇总与分析关键性能指标(KPIs),将复杂的服务器运行数据转化为直观、可操作的信息视图,为决策提供坚实依据, 服务器监控统计表的核心构成要素一个专业、全面的服务器监控统计表应包含以下关键维度的数据:资源利用率指标:C……

    2026年2月8日
    12800
  • 个人能否注册商标?个人注册商标需要什么条件

    个人完全可以注册商标,但必须通过“个体工商户”或“个人独资企业”等经营主体身份申请,自然人仅凭身份证无法直接注册,很多创业者在起步阶段,往往纠结于自己名下没有公司,是否还能拥有品牌保护,商标法保护的是商业标识,而非仅仅保护公司实体,只要你能证明自己是合法的经营主体,哪怕只是一个个体户,也能拿到那张含金量极高的……

    服务器运维 2026年6月2日
    4300
  • 服务器帮安装吗,服务器安装服务哪家专业可靠

    专业技术人员提供的服务器帮安装服务,是保障企业IT基础设施快速落地与稳定运行的核心解决方案,相比于自行摸索部署,专业安装服务能够规避90%以上的初始配置错误,确保系统环境的安全基线,并大幅缩短业务上线周期,对于缺乏专职运维团队的企业而言,选择专业协助不仅是购买一次简单的技术服务,更是为后续的数据安全与业务连续性……

    2026年4月5日
    7300
  • 服务器监听的作用是什么?详解原理与应用场景

    服务器监听的核心作用在于持续侦听特定网络端口,主动等待并接收来自客户端的连接请求或数据,从而建立通信通道,为网络服务提供基础支撑, 监听的本质:服务的”守门人”与”启动键”想象服务器是一个提供各种服务的场所(如网站、数据库、邮件系统),”监听”就是这个场所门口始终值守的接待员,它的核心职责是:持续值守: 服务器……

    2026年2月9日
    14700
  • 服务器配置硬件配置怎么选才合理?,有哪些注意事项?

    服务器配置没有万能答案,但从业务负载、并发规模和预算上限三个维度倒推选型,多数场景下都能找到性价比最优解,服务器配置怎么选:先回答三个问题再动手选服务器配置最怕的就是一上来直接看参数,CPU主频、核心数、内存频率、硬盘读写速度,这些数字单独看都有道理,凑在一起反而让人更糊涂,业内专家指出,服务器配置规划的第一原……

    2026年8月8日
    1300
  • 服务器服务端ip是什么,服务器服务端ip怎么查

    服务器服务端IP是网络通信的基石,直接决定了数据传输的效率、安全性以及业务的可达性, 在构建数字化业务时,理解并正确配置服务端IP不仅是技术实现的基础,更是保障用户体验和SEO优化的关键环节,一个稳定、安全且地理位置优化的服务端IP,能够显著降低延迟,提升搜索引擎的抓取效率,从而确立业务在网络世界的权威性,核心……

    2026年2月21日
    12400
  • 服务器怎么实名认证?服务器实名认证需要什么资料

    服务器实名认证是保障网络合规运营、规避法律风险及确保业务连续性的首要前提,其核心流程在于选择具备资质的服务商、准备精准的企业或个人证件、配合人脸识别等核验环节,并严格履行ICP备案与公安备案的双重义务,对于任何在国内运营的服务器而言,实名认证不仅是接入互联网的“通行证”,更是落实《网络安全法》中主体责任的关键举……

    2026年3月18日
    13700
  • 互联网的服务器都有哪些类型,怎么选最合适

    互联网服务器从形态上主要分为物理服务器、虚拟专用服务器(VPS)、云服务器和边缘服务器,选择哪种取决于业务规模、预算和性能需求,物理服务器:独占硬件资源物理服务器是传统意义上的独立硬件,用户拥有完整的计算、内存和存储资源,不与其他租户共享,这种架构适合对性能、安全性和合规性要求极高的场景,例如金融交易系统、核心……

    2026年8月21日
    200
  • 个人搭建本地云存储难吗?家庭NAS私有云搭建教程

    通过NAS(网络附属存储)硬件配合私有云软件,能在保障数据隐私的前提下,实现跨设备无缝访问与备份,其综合成本虽高于公有云,但长期来看具备更高的性价比和安全性,为什么选择本地私有云而非公有云?在数据泄露频发和订阅制收费不断上涨的背景下,越来越多的技术爱好者和企业用户开始将目光转向本地存储方案,这并非单纯的怀旧,而……

    2026年5月29日
    9500
  • 服务器控制台日志怎么加?如何查看服务器控制台输出日志

    给服务器加控制台输出日志是提升运维效率、快速定位故障的最直接手段,建议通过配置应用日志框架或集成系统级监控工具来实现标准化输出,在服务器管理的日常工作中,我们常常会遇到这样的场景:应用突然变慢,或者某个接口报错,但日志文件里却是一片空白,或者杂乱无章的信息让人无从下手,这时候,如果能在控制台实时看到清晰的输出日……

    2026年7月9日
    8400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注