首页>Program>source

我有一个带有"状态名称"的分类列.我不确定必须执行哪种类型的分类编码才能将其转换为数字类型。

There are 83 unique State Names.

Label Encoder用于序数分类变量,但是OneHot会增加列数,因为有83个唯一的State名称。

还有什么可以尝试的吗?

最新回答
  • 10天前
    1 #

    我会使用scikit的OneHotEncoder(https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html)或 CategoricalEncoder,编码设置为" onehot".它会自动找到每个功能的唯一值并将其处理为一个热向量.它确实增加了该功能的输入维度,但是如果您要进行任何类型的数据科学工作,则这是必需的.如果将特征转换为序数整数(即仅一个整数),而不是二进制值向量,则算法可能会在两个(可能是完全分开的)分类值之间得出错误结论,而这两个分类值恰好在分类空间中很接近 .

  • 10天前
    2 #

    除了热点以外,还有其他强大的编码方案,它们不会增加列数.您可以尝试以下方法(以增加的复杂性顺序):

    威兹威兹

    所有这些方案都已经在

      count encoding: encode each category by the number of times it occurs in data, useful in some cases

      target encoding: encode each category by the average value of target/outcome within that category if target is continuous; or by the probability of target if it is discrete

    库中实现了 在这里

    categorical encoder

  • python:patchmultiple()返回一个空字典
  • python:是否有pandas函数可以使用自定义函数将数据框与自身"交叉应用"?