一键编码问题-我的问题的概念和解决方案(Kaggle数据集)

问题描述 投票:0回答:1

[我正在Kaggle中进行练习,它在分类变量的模块上,特别是一个-热门编码部分:https://www.kaggle.com/alexisbcook/categorical-variables我在整个工作簿中都做得很好,而我正在尝试解决的最后一部分,最后是应用一个编码器来预测房屋销售价值的可选部分。我已经制定了以下代码`,但在粗体行中:OH_cols_test = pd.DatFrame(OH_encoder.fit_transform(X_test [low_cardinality_cols]))),我收到输入包含NaN的错误消息。

所以,我的第一个问题是,当涉及到-热编码时,是否不应该将NA像特定列中的任何其他类别一样对待?第二个问题是,如果我想删除这些NA,最有效的方法是什么?我尝试了归因,但看起来仅适用于数字吗?有人可以让我知道我在哪里错吗?非常感谢!:

from sklearn.preprocessing import OneHotEncoder

# Use as many lines of code as you need!
OH_encoder = OneHotEncoder(handle_unknown='ignore', sparse=False)
**OH_cols_test = pd.DataFrame(OH_encoder.fit_transform(X_test[low_cardinality_cols]))**

# One-hot encoding removed index; put it back
OH_cols_test.index = X_test.index

# Remove categorical columns (will replace with one-hot encoding)
num_X_test = X_test.drop(object_cols, axis=1)

# Add one-hot encoded columns to numerical features
OH_X_test = pd.concat([num_X_test, OH_cols_test], axis=1)
python data-science one-hot-encoding kaggle
1个回答
0
投票

所以,我的第一个问题是,当涉及到-热编码时,是否不应该将NA像特定列中的任何其他类别一样对待?

NA仅缺少数据,因此您可以宽松地将具有NA的行视为不完整。您可能会发现自己正在处理NA出现在一半行中的数据集,这将需要一些聪明的功能工程来弥补这一点。这样想:如果一种热编码是表示二进制状态的简单方法(例如is_male,salary_is_less_than_100000等),那么NaN / null是什么意思?那里您手上有一只薛定inger的猫。只要不破坏数据集的大小,通常就可以放心地删除NA。您愿意处理的数据丢失量完全是基于情况的(对于练习来说可能很好)。

第二个问题是,如果我想删除这些NA,最有效的方法是什么?我尝试了归因,但看起来仅适用于数字吗?

我可以建议this

© www.soinside.com 2019 - 2024. All rights reserved.