【发布时间】: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