You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于自定义条件实现两分类One Hot编码

自定义条件规则的二分类One Hot编码实现方案

这类带自定义阈值的One Hot编码不需要修改常规编码逻辑,只需要前置一步条件映射,把原始值先归到目标的2个分类中,再做编码即可,以下是几种常用实现方式:

  • 原生Python无依赖实现
    不需要安装第三方库,直接遍历序列按规则生成编码:

    # 待编码原始序列
    raw_data = [1, 2, 3, 5]
    encoded_result = []
    for value in raw_data:
        if value < 3:
            encoded_result.append([1, 0])
        else:
            encoded_result.append([0, 1])
    
    print(encoded_result)
    # 输出结果:[[1, 0], [1, 0], [0, 1], [0, 1]]
    
  • NumPy向量化实现(适合大规模数据)
    面向数组操作,运行效率远高于原生循环,适合处理大批量数值序列:

    import numpy as np
    
    raw_data = np.array([1, 2, 3, 5])
    # 初始化shape为(样本数, 2)的全0编码矩阵
    encoded_result = np.zeros((len(raw_data), 2), dtype=int)
    # 生成阈值掩码
    less_than_3_mask = raw_data < 3
    # 按掩码给对应位置赋值
    encoded_result[less_than_3_mask, 0] = 1
    encoded_result[~less_than_3_mask, 1] = 1
    
    print(encoded_result)
    # 输出结果:
    # [[1 0]
    #  [1 0]
    #  [0 1]
    #  [0 1]]
    
  • Scikit-learn流水线适配实现
    如果需要接入现有sklearn特征处理流水线,可以先做二值标签映射,再调用标准One Hot编码组件:

    import numpy as np
    from sklearn.preprocessing import OneHotEncoder
    
    raw_data = np.array([1, 2, 3, 5]).reshape(-1, 1)
    # 第一步:按自定义规则把原始值映射为0、1两类标签
    binary_labels = np.where(raw_data < 3, 0, 1)
    # 第二步:调用常规OneHotEncoder完成编码
    encoder = OneHotEncoder(sparse_output=False, dtype=int)
    encoded_result = encoder.fit_transform(binary_labels)
    
    print(encoded_result)
    # 输出结果:
    # [[1 0]
    #  [1 0]
    #  [0 1]
    #  [0 1]]
    

核心思路提示:所有自定义规则的定长One Hot编码,都可以拆解为「自定义规则映射离散标签」+「标准One Hot编码」两个步骤,不需要重构原有编码逻辑,只需要根据业务规则调整第一步的映射规则即可。

内容的提问来源于stack exchange,提问作者cocojambo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 13:54:03