如何用python处理数据不全_如何使用python处理测试数据集中看不见的分类值?

这篇博客探讨了如何在数据预处理阶段处理缺失值。提出了两种解决方案:一是将NaN视为一个独立的类别,二是创建一个'罕见'类别来归类不常见的实例。在处理分类变量时,如果某些值出现频率低于一定阈值,则将其归为'rare'类别,以避免对模型造成影响。这种方法确保在生产环境中能够有效应对未知的新类别。
摘要由CSDN通过智能技术生成

通常您不想删除信息。您希望在模型中预先包装这些信息。例如,您可能有一些具有NaN值的数据:train_data = ['NewYork', 'Chicago', NaN]

解决方案1

你可能会有一种方法来处理这个问题,不管你是插补还是删除等等。。这取决于你的问题。通常,你可以让NaN成为它自己的类别,因为这也是信息。这样就足够了:

^{pr2}$

因此,当您进入生产阶段时,您可以编写一个脚本,将看不见的类别推送到您先前建立的“缺失”类别中。在

解决方案2

如果你对这个想法不满意,你可以把这些不寻常的案例变成一个新的独特的类别,我们称之为“罕见”,因为它并不经常出现。在train_data = ['NewYork', 'Chicago', 'NewYork', 'Chicago', 'London']

# let's capture the categorical variables first

cat_vars = [var for var in X_train.columns if X_train[var].dtype == 'O']

def find_frequent_labels(df, var, rare_perc):

df = df.copy()

tmp = df.groupby(var)['Target_Variable'].count() / len(df)

return tmp[tmp>rare_perc].index

for var in cat_vars:

frequent_ls = find_frequent_labels(X_train, var, 0.01)

X_train[var] = np.where(X_train[var].isin(frequent_ls), X_train[var], 'Rare')

X_test[var] = np.where(X_test[var].isin(frequent_ls), X_test[var], 'Rare')

现在,考虑到足够多的“正常”类别,伦敦将被推到“稀有”类别。不管有多少新的类别出现,它们都将作为一个类别分组到“稀有”中;等待它们的仍然是稀有实例,不会成为主导类别。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值