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

如何将起始为1的整数值及Pandas DataFrame列转为独热编码?

解决从1开始的整数值独热编码问题

Got it, let's break down how to handle one-hot encoding for integer values starting at 1—whether you're working with standalone numbers or a Pandas DataFrame column with values 1 through 7. These scenarios are super common, and there are a couple of straightforward ways to tackle them.

方法1:用Pandas的get_dummies(快速又省心)

If you're working with a Pandas DataFrame, get_dummies is hands down the easiest way. It doesn't care if your category values start at 0 or 1—it just generates one-hot encoded columns for every unique value in your target column.

Let's use an example DataFrame matching your scenario (values 1-7):

import pandas as pd

# 示例DataFrame,包含1-7的分类列
df = pd.DataFrame({'target_category': [1, 3, 2, 7, 5, 1, 4]})

一行代码生成独热编码列:

# 创建独热编码列,添加前缀区分原类别
one_hot_cols = pd.get_dummies(df['target_category'], prefix='category')

# 如果需要将编码列合并回原DataFrame
df_encoded = pd.concat([df, one_hot_cols], axis=1)

执行后会生成category_1、category_2……category_7这些列,每个列对应原类别值的存在(1)或不存在(0)。

方法2:用Scikit-learn的OneHotEncoder(适合机器学习工作流)

如果需要把编码步骤融入Scikit-learn的预处理流水线(Pipeline),有两种可靠方案:

方案A:先将数值调整为从0开始

Scikit-learn的OneHotEncoder对从0开始的连续整数适配性很好,只需给原列值减1即可:

from sklearn.preprocessing import OneHotEncoder
import numpy as np

# 将列数据转换为Scikit-learn要求的二维数组格式
X = df['target_category'].values.reshape(-1, 1)

# 调整数值范围(1→0,2→1……7→6)
X_shifted = X - 1

# 初始化编码器并完成转换
encoder = OneHotEncoder(sparse_output=False)
one_hot_encoded = encoder.fit_transform(X_shifted)

方案B:直接指定分类类别

无需调整数值,直接告诉编码器你的目标类别是1到7:

# 初始化编码器,明确传入1-7的分类列表
encoder = OneHotEncoder(categories=[[1, 2, 3, 4, 5, 6, 7]], sparse_output=False)

# 直接对原数值进行拟合转换
one_hot_encoded = encoder.fit_transform(X)

这种方式会生成7列,分别对应1到7每个值的独热编码。

针对因变量场景的补充说明

因为你的列是分类问题的因变量,需要注意:部分模型(如树模型)可以直接使用整数标签,但如果模型要求独热编码(如线性模型、神经网络),上面的任意一种方法都能完美适配。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:38:30