【问题标题】:Do I leave features with numeric categories as it is or create dummy variables?我是保留具有数字类别的特征还是创建虚拟变量?
【发布时间】:2017-02-26 05:58:27
【问题描述】:

我正在处理一个数据集,该数据集结合了数字特征和类别但用整数编码的特征。例如,如果是赛马,

horse_id   race_date    track_no        race_number    barrier_number  won_race  
1          2016-10-01   100             1              4               1
2          2016-10-01   100             1              3               0
1          2016-10-15   200             3              5               0
...

所以,如果我正在创建一匹马赢得比赛的概率模型,并使用 race_number 之类的功能(同一天同一条赛道上可能有几场比赛,那么这应该会对跟踪条件)和barrier_number(一匹马可能更喜欢在内部障碍或外部障碍等),我应该将这些特征保持原样还是创建虚拟变量来指示变量的 1(存在)和 0(不存在)每一行?

这是一个简单的示例,但这些列可能具有大量可能的值,并且创建虚拟变量会大大增加特征的维度。这是一个必须做出的权衡,还是只留下一列?

编辑:另外,如果我将列保持原样并将其转换为 pandas 中的 caregory dtype,这是一个好习惯吗?现有的 ML 库(如 Scikit-learn)能否正确处理?

【问题讨论】:

  • 数字很好,但他们的班级应该是一个因素。
  • 不是一个坏问题,但由于您不问在技术上如何在 R 或 python 中执行此操作,因此最好在 stats.stackexchange.com 上提问。
  • @ChirayuChamoli 谢谢。当我将它们应用于 ML 算法时,pandas 中的因子日期类型或类别会很好地工作吗?
  • @JanvanderLaan 这是真的。我正在研究熊猫,所以我将问题编辑得更具体,因为我不确定这些列的 dtype 应该是什么(int 或 category)以及 ML 库是否可以正常工作。
  • @sfactor: datetype 不能由任何算法处理,因此您可以将一些有效的数据差异或编码为月份的开始、中间、结束。月底举行的 AFAIK 比赛风险很高。对于 scikit,我认为您已经对分类变量进行了虚拟化。

标签: r pandas machine-learning logistic-regression feature-extraction


【解决方案1】:

对于所描述的功能(race_numberbarrier_number),我相信保持原样完全没问题。但是,对于上面的示例,我将编码 track_no 特征。

这是因为各个 track_no 值之间没有关系。

我会把上面的例子改成:

horse_id   race_date    track_100      track_200        race_number    barrier_number  won_race  
1          2016-10-01   1              0                1              4               1
2          2016-10-01   1              0                1              3               0
1          2016-10-15   0              1                3              5               0

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 2019-05-19
    • 2020-02-02
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2022-08-24
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多