gpt4 book ai didi

python - Pandas:将 NaN 视为 One-Hot 编码中不可见的值

转载 作者:行者123 更新时间:2023-12-01 09:29:28 31 4
gpt4 key购买 nike

我有一个训练集,用于构建一些机器学习模型,我需要设置一些代码来预测测试集(我无权访问)。

例如,如果我有一个 DataFrame,训练:

    car
0 Audi
1 BMW
2 Mazda

我可以使用pd.get_dummies来获取:

   car_Audi car_BMW car_Mazda
0 1 0 0
1 0 1 0
2 0 0 1

将此结果称为 DataFrame,train_encoded

现在,假设我的测试 DataFrame 如下所示:

    car
0 Mercedes

我可以使用:

pd.get_dummies(test).reindex(columns=train_encoded.columns)

获取:

   car_Audi car_BMW car_Mazda
0 0 0 0

如何将 NaN 视为 car 列中未见的值?也就是说,如果我在 testcar 列中遇到 NaN,我想返回:

   car_Audi car_BMW car_Mazda
0 0 0 0

谢谢!

最佳答案

如果您生成了一个字符串filler,但它没有出现在df.car中,那么,稍微修改一下Wen在评论中的建议(对于'NAN'df.car中的字符串的情况),您可以使用

df.car.fillna(filler, inplace=True) 
pd.get_dummies(test).reindex(columns=train_encoded.columns)

如果您可以提前访问所有df.car,则定义filler的一种方法是通过

filler = '_' + ''.join(df.car.unique())

因为它至少比其中最长的字符串长1。另一种方式是通过using a random string

filler = ''.join(random.choice(string.ascii_lowercase) for _ in range(10))

您拥有此类元素的概率小于 len(df)/26 ** 10

关于python - Pandas:将 NaN 视为 One-Hot 编码中不可见的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50088459/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com