我正在处理一个数据集,该数据集包含数字特征和类别但使用整数编码的功能。例如,如果是赛马,
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中的护理dtype,这是一个好习惯吗?像Scikit-learn这样的现有ML库是否会正确处理?
答案 0 :(得分:0)
对于所描述的功能(race_number
,barrier_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
我希望有所帮助!