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

如何组合使用OneHotEncoder与LabelEncoder对不同类型特征编码

编码需求实现方案

数据集特征分类

  • 二分类文本数据:示例值为'yes'、'no',使用LabelEncoder编码
  • 多分类名义数据:包含feature_1(取值:父亲/母亲/其他)、feature_2(取值:家庭/学校声誉/课程偏好/其他)两个特征,唯一需要使用OneHotEncoder编码的特征类
  • 二值数值数据:取值为0、1,使用LabelEncoder编码
  • 多值数值数据:示例取值为1、2、3、4、5,使用LabelEncoder编码

调整后代码

首先提前导入依赖库:

import pandas as pd
from sklearn.preprocessing import LabelEncoder

代码实现:

# 自定义需要做OneHot编码的名义类特征列名,可根据实际数据集列名增删
nominal_features = ['feature_1', 'feature_2']

def encoder(df):
    le = LabelEncoder()
    for c in df.columns:
        # 跳过需要单独做OneHot编码的名义特征
        if c in nominal_features:
            continue
        # 对文本类型特征做Label编码
        if df.dtypes[c] == object:
            df[c] = le.fit_transform(df[c].astype(str))
    # 对指定名义特征做OneHot编码,输出为整数格式
    df = pd.get_dummies(df, columns=nominal_features, dtype=int)
    return df

# 调用函数处理数据集
stud = encoder(stud)
stud.head()

注:这里直接用pandas内置的get_dummies实现OneHot编码,不需要额外做特征拼接操作,生成的新列会自动以「原特征名_取值」的格式命名,可读性更高。如果需要和sklearn管线兼容,也可以替换为OneHotEncoder实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:24:02