【问题标题】:How should i impute Nan values in a categorical column?我应该如何在分类列中估算 Nan 值?
【发布时间】:2018-12-29 19:15:54
【问题描述】:

我是机器学习的初学者,我的观点是我应该对列(分类)进行编码并在列上使用简单的标签编码,然后用最常见的值或其他方式输入 NAN 值。由于编码需要将我的数据帧转换为数组,然后插补将需要再次将数组转换为数据帧,所有这些都针对单个列。还有更多这样的列。

例如,我有这个变量“BsmtQual”

BsmtQual:评估地下室的高度并具有以下类别数

   Ex   Excellent (100+ inches) 
   Gd   Good (90-99 inches)
   TA   Typical (80-89 inches)
   Fa   Fair (70-79 inches)
   Po   Poor (<70 inches
   NA   No Basement

“BsmtQual”中的 2919 个值中有 81 个是 NAN 值。

【问题讨论】:

    标签: pandas dataframe machine-learning encoding imputation


    【解决方案1】:

    对于您将来遇到的此类不涉及编码的问题,您应该在https://datascience.stackexchange.com/ 发帖。

    这取决于几件事。首先,这个变量在你的练习中有多重要?假设您正在进行分类,您可以尝试删除所有没有 NaN 值的行,运行一些模型,然后删除变量并再次运行相同的模型。如果您没有看到准确度下降,那么您可能会考虑完全删除该变量。

    如果您确实发现准确性下降或由于无人监督问题而无法判断影响,那么您可以尝试其他几种方法。如果您只想快速修复,并且没有太多 NaN 或类别,那么您可以使用最频繁的值进行估算。如果满足前面的条件,这应该不会导致太多问题。

    如果您想更准确,那么您可以考虑使用您必须预测分类变量的类别的其他变量(显然,这仅在分类变量与您的其他一些变量相关时才有效)。您可以为此使用多种算法,包括分类器或聚类。这一切都取决于您的分类变量的分布以及您希望投入多少精力来解决您的问题。

    (我也只是在学习,但我认为这是你的大部分选择)

    【讨论】:

      【解决方案2】:

      "... 或者还有其他方式。"

      例子:

      Ex   Excellent (100+ inches) 5 / 5 = 1.0
      Gd   Good (90-99 inches)     4 / 5 = 0.8
      TA   Typical (80-89 inches)  3 / 5 = 0.6
      Fa   Fair (70-79 inches)     2 / 5 = 0.4
      Po   Poor (<70 inches        1 / 5 = 0.2
      NA   No Basement             0 / 5 = 0.0
      

      但是,标签表示的精度较低(如果与实际测量相结合,则会影响准确性)。

      可以通过在类别范围内缩放值(例如,在 0.0 - 0.2 上缩放 0 - 69 英寸)或通过每个类别的近似值(更线性准确)来解决。例如,如果最大值是 200 英寸:

      Ex   Excellent (100+ inches) 100                  / 200 = 0.5000
      Gd   Good (90-99 inches)     ((99 - 90) / 2) + 90 / 200 = 0.4725
      TA   Typical (80-89 inches)  ((89 - 80) / 2) + 80 / 200 = 0.4225
      Fa   Fair (70-79 inches)     ((79 - 70) / 2) + 70 / 200 = 0.3725
      Po   Poor (<70 inches        (69 / 2)             / 200 = 0.1725
      NA   No Basement             0                    / 200 = 0.0000
      
      Actual measurement 120 inch  120                  / 200 = 0.6000
      

      产生不错的近似值(范围中点值,Ex 除外,它是最小值)。如果对此类列的计算产生不准确,则表示符号不精确(标签表示范围而不是值)。

      【讨论】:

      • 我应该为上面写什么代码?我应该如何处理列的 NAN 值??
      猜你喜欢
      • 2018-12-27
      • 1970-01-01
      • 2018-09-26
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 2014-10-04
      • 2018-02-15
      • 1970-01-01
      相关资源
      最近更新 更多