【问题标题】:One Hot Encoding with many categories一种多类别的热编码
【发布时间】:2023-03-06 07:18:02
【问题描述】:

我有一个分类数据集,我正在尝试将其转换为数字格式。我确实尝试了通用的一种热编码,但它导致了巨大的尺寸。所以我将我的编码限制在每个参数中的前 8 个类别。

所以我正在遍历每一列。但我在 data_prep_text.i.value_counts 处遇到错误。

for i in data_prep_text.columns:
    if len(data_prep_text[i].unique())>7:
        top8=[j for j in data_prep_text.i.value_counts(ascending=False.head(8)).index]
        for label in top8:
            data_prep_text[label]=np.where(data_prep_text[i]==label,1,0)
    else:
        data_prep_text[i]=0

这是我面临的错误:

AttributeError                            Traceback (most recent call last)
<ipython-input-56-e25949bef086> in <module>
      1 for i in data_prep_text.columns:
      2     if len(data_prep_text[i].unique())>7:
----> 3         top8=[j for j in data_prep_text.i.value_counts(ascending=False.head(8)).index]
      4         for label in top8:
      5             data_prep_text[label]=np.where(data_prep_text[i]==label,1,0)

~/anaconda3_501/lib/python3.6/site-packages/pandas/core/generic.py in __getattr__(self, name)
   4374             if self._info_axis._can_hold_identifiers_and_holds_name(name):
   4375                 return self[name]
-> 4376             return object.__getattribute__(self, name)
   4377 
   4378     def __setattr__(self, name, value):

AttributeError: 'DataFrame' object has no attribute 'i'

'''

如果我选择“邻居”。 该代码没有获取 i 值并使其类似于 data_prep_text.Neighborhood.value_counts。

【问题讨论】:

    标签: python pandas one-hot-encoding


    【解决方案1】:

    您应该使用方括号符号来避免此问题,并删除head 方法并通过使用切片取前 8 个值来替换它

    top8=[j for j in data_prep_text[i].value_counts(ascending=False)[:8].index]
    

    当您执行data_prep_text.i 时,它相当于data_prep_text['i']

    【讨论】:

    • 但我仍然收到错误属性错误:'bool' 对象没有属性'head'
    • 你不能进入value_counts,但你可以通过[:8]获得前八个索引,我已经更新了我的答案
    猜你喜欢
    • 2018-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 2021-12-01
    • 2018-12-17
    • 1970-01-01
    相关资源
    最近更新 更多