划分数据集之前one-hot,还是划分之后one-hot

在处理类别型特征时,是否应在数据划分前还是后进行one-hot编码是个关键问题。整体one-hot编码确保train和test的维度一致,但可能在新数据集中遇到未知类别。而划分后one-hot编码则可能导致train和test集中的类别不匹配。正确的做法需要在训练和测试集之间分别进行one-hot编码,以妥善处理新出现的类别。
摘要由CSDN通过智能技术生成

在处理类别型特征时,有时需要进行one-hot

在进行模型训练时,需要把数据划分train和test,类别型数据是在划分之前one-hot,还是划分之后?

在划分之前做one-hot

整体one-hot,train和test 不会出现某个值无法编码的问题。

train和test的维度都是一致的,可以做训练和测试。

但,如果给你一份新的数据集,在类别型数据里出现了新的值,该怎么表示?

划分之后做one-hot

这样会遇到两个问题

  • 某个值,train中出现,test未出现,怎么处理?
  • 某个值,train中未出现,test中出现,怎么处理?

 

在此之前,我也是对数据整体做one-hot的处理的,但这是不正确。正确的做法:

import pandas as pd
from sklearn.preprocessing import OneHotEncoder

### Correct
train = pd.DataFrame(['A', 'B', 'A', 'C'])
test = pd.DataFrame(['B', 'A', 'D'])

enc = OneHotEncoder(handle_unknown = 'ignore')
enc.fit(train)

enc.transform(train).toarray()
#array([[1., 0., 0.],
#       [0., 1., 
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值