【问题标题】:There are fewer rows in the dataframe after one hot encoding一次热编码后数据帧中的行数减少
【发布时间】:2020-03-21 07:51:13
【问题描述】:

我有一个数据集,我想使用 sklearn.preprocessing.OneHotEncoder 对其进行一次热编码。我的问题是编码后,结果包含的行数比原始数据集少(差为 5)。 这是我的代码:

one_hot_encoder = OneHotEncoder(handle_unknown='ignore', sparse=False)
X_cat = pd.DataFrame(
            one_hot_encoder.fit_transform(X[categorical_vars]),
            columns=one_hot_encoder.get_feature_names(categorical_vars)
)

提前感谢您的任何建议。 :)

【问题讨论】:

    标签: python pandas machine-learning scikit-learn data-processing


    【解决方案1】:

    我认为您获得的输出列较少,因为您有一些未知的分类特征。因为您将关键字“handle_unknown”设置为忽略,所以会跳过这些列。

    如果你给我一些你的样本数据,我可以为你测试并给你一个更好的解释。否则,我可以建议您阅读此post。它很好地解释了“handle_unknown”关键字的用途以及使用它的原因和时间。

    【讨论】:

    • 感谢您的回复。我的问题是根据行,而不是列。但是,我认为问题不在于“handle_unknown”关键字。上述数据是安装了编码器的数据。当我在没有拟合的情况下转换一个集合(例如我的测试集)时,就会看到对未知值的无知。
    • 我阅读了您回答中提供的帖子,我发现“category_encoders”包的 OneHotEncoder 可以解决我的问题。再次感谢您的回答。 :)
    • 没问题。感谢您关闭:)
    猜你喜欢
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 2018-01-04
    • 2016-10-23
    • 2020-08-05
    • 1970-01-01
    • 2019-05-02
    相关资源
    最近更新 更多