【问题标题】:One hot encoding in PythonPython中的一种热编码
【发布时间】:2018-12-17 19:25:36
【问题描述】:

我正在尝试学习机器学习。

我对一种热编码有疑问:
我有一个数据集分为 2 个 excel 数据表。一张有火车,另一张有测试数据。我首先通过使用 pandas 导入训练数据表来训练我的模型。数据集中有必须编码的分类特征。我对它们进行了热编码。

导入测试数据集后,如果我对其进行热编码,编码会与训练数据集相同还是不同。如果是这样,我该如何解决这个问题?

【问题讨论】:

  • 你是如何执行 one-hot 编码的?手动或使用 sklearn。?
  • 如果您的训练/测试集在分类中包含不同的值,您是一种热编码,那么您将返回不同的列。 IMO,您的选择是将训练/测试一起编码,或者编写一个函数以将适当的虚拟列添加到您的一个热编码训练/测试集中。

标签: python pandas machine-learning


【解决方案1】:

OneHot 编码为每个类别或每个值创建二进制属性,一个属性等于 1(否则为 o)。一个属性等于 1(热),而其他属性为 0(冷)。

示例:-

from sklearn.preprocessing import OneHotEncoder
encoder = OneHotEncoder()
1hot = encoder.fit_transform(df_object.reshape(-1,1))
1hot

样本输出:-

array([[0., 0., 0., 1., 0.],
       [0., 0., 0., 1., 0.],
       [0., 0., 0., 1., 0.],
       ...,
       [0., 1., 0., 0., 0.],
       [0., 1., 0., 0., 0.],
       [0., 1., 0., 0., 0.]])

您需要检查您在 oneHotEncoding 中拟合的属性是否是相对接近的值。

【讨论】:

    【解决方案2】:

    您有 2 张单独的工作表(用于测试和训练数据集)。在将工作表导入 pandas 数据框后,您必须分别对这两个工作表进行一次热编码。

    并且是的,对于同一个数据集,一个热编码将是相同的,无论您应用在不同的数据表中,请确保您在每个数据表的该列中具有相同的分类值

    【讨论】:

      猜你喜欢
      • 2018-03-19
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-19
      • 2018-12-17
      • 1970-01-01
      • 1970-01-01
      • 2018-10-25
      相关资源
      最近更新 更多