【问题标题】:Is one hot encoding required for this data set?此数据集是否需要一种热编码?
【发布时间】:2020-10-26 06:02:57
【问题描述】:

以下是来自 UCI 数据存储库的数据集。我想建立一个回归模型,将血小板计数作为因变量(y),其余作为特征/输入。

但是,数据集中以数字形式存在的分类变量很少,例如贫血、性别、吸烟和 DEATH_EVENT。

我的问题是:

  1. 是否应该在构建回归模型之前对这些变量执行“单热编码”?
  2. 另外,我观察到这些值在不同的范围内,所以我是否应该在应用回归模型之前对数据集进行缩放?

【问题讨论】:

  • 从您的数据样本看来,贫血、性和吸烟的值只有 0 和 1。如果是这种情况,您不必执行 one-hot 编码。

标签: python pandas machine-learning regression one-hot-encoding


【解决方案1】:

1.在构建回归模型之前,我应该对这些变量执行“单热编码”吗?

是的,您应该对分类变量进行一次性编码。你可以像下面这样使用:

columns_to_category = ['sex', 'smoking','DEATH_EVENT']
df[columns_to_category] = df[columns_to_category].astype('category') # change datetypes to category
df = pd.get_dummies(df, columns=columns_to_category) # One hot encoding the categories

2.如果是这样,只有一个热编码就足够了,或者我应该执行什至 标签编码?

我猜一个热编码应该就足够了。

3.另外,我观察到值在不同的范围内,所以我是否应该在应用回归模型之前缩放数据集?

是的,您可以使用StandardScaler()MinMaxScaler() 来获得更好的结果,然后反向缩放预测。此外,请确保您单独扩展测试和训练而不是合并,因为在现实生活中您的测试不会实现,因此您需要相应地扩展以避免此类错误。

【讨论】:

    【解决方案2】:

    您不必使用 one-hot 编码,因为这些列已经有数值。尽管如果这些数值实际上是字符串而不是 int 或 float,那么您应该对它们使用 one-hot 编码。关于缩放数据,变化是相当大的,因此您应该对其进行缩放以避免您的回归模型偏向于高值。

    【讨论】:

    • 在我看来,即使这些列是数字的,这里也需要 one-hot 编码,因为数值不代表任何信息(1 和 0 只是一个类变体,没有任何意义)。因此,如果该值没有多大意义,那么预测器将不会真正使用它。
    • 它们实际上代表了一个人是否患有贫血,或者一个人是否患有糖尿病,一个人是否吸烟等等。这些列已经编码。 get_dummies 函数的作用是将二进制 0,1 值分配给分类字符串数据。它将分类字符串值编码为二进制值。当值已经二进制编码时,使用 one-hot 编码是没有用的。正如我所提到的,如果这些数值实际上是字符串,则应该对其进行编码。虽然仍然这样做,不会有任何坏处,只是那里不需要。
    【解决方案3】:

    如果这些是真正的二进制类别,您不必进行一次热编码。它们已经编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-16
      • 1970-01-01
      • 2022-06-24
      • 2016-03-19
      • 2019-07-17
      • 2019-06-18
      • 2019-05-02
      • 2018-10-25
      相关资源
      最近更新 更多