如何为一组具有类似类别的列生成一个热编码数据

2024-06-25 23:12:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我从互联网上收集了大量数据,试图预测一项运动的结果!但是,现在我发现自己对如何为培训准备数据集感到困惑。基本上,我有一个如下所示的数据框架,当然还有更多的列

            HomeTeam    AwayTeam       HTR   HF      AF  HomePlayStyle  AwayPlayStyle
Date                            
2014-08-16  Arsenal     Crystal Palace  D   13.0    19.0    4-1-4-1         4-2-3-1
2014-08-16  Leicester   Everton         A   16.0    10.0    4-4-2 double 6  4-2-3-1
2014-08-16  Man United  Swansea         A   14.0    20.0    3-5-2           3-5-2
2014-08-16  QPR         Hull City       D   10.0    10.0    5-3-2           5-4-1
2014-08-16  Stoke City  Aston Villa     D   14.0    9.0     4-2-3-1        4-3-3 Attacking

我的因变量(我需要预测的)是HTR(3类:D-Draw、A-A级客场胜利、H-Home胜利)。但是在培训之前,因为我需要准备数据集,我相信我需要使用一个热编码将列[HomeTeam、AwayTeam、HomePlayStyle、AwayPlayStyle]更改为0和1。但是,我对该方法有一些疑问:

  1. HomePlayStyle和AwayPlayStyle具有相似的类别,当我使用一个热编码时,相同的playstyle(3-5-2,示例中的第三个示例)创建了两个列,但技术上它们是相同的。这会影响我的结果吗?或者我应该尝试合并它们,还是有办法绕过这个问题?当然,两列中都有4-2-3-1,但是pd.get_dummies()会创建两列

  2. 对于HomeTeam和AwayTeam列(我在不同的数字列中有这些团队的一些临时统计数据,但我认为我需要在训练期间将团队名称保留在数据集中),我应该对它们进行热编码吗?尽管为同一支球队创建了两个专栏(例如,主场阿森纳和客场阿森纳),但我认为这是一个优势,因为主场比赛与客场比赛截然不同。所以这不应该是个问题!我的假设正确吗?我甚至需要对这些列进行热编码吗

任何想法都将不胜感激

编辑: 3.我如何确保我的算法意识到HomePlayStyle_4-2-3-1(在得到假人后)实际上代表的是主队而不是Awaytam?有没有连接列这样的东西,这样我就可以知道哪一组列属于HomeTeam,哪一组属于AwayTeam


Tags: 数据框架示例city编码互联网团队hf
1条回答
网友
1楼 · 发布于 2024-06-25 23:12:33

你问题的理论部分似乎更适合你,所以我将简要地谈谈这个问题。关于一个热编码,对我来说最简单的方法是通过熊猫:

categorical_cols = ['HomeTeam', 'AwayTeam', 'HomePlayStyle', 'AwayPlayStyle']
X = pd.get_dummies(df, columns=categorical_cols)

这将使用{column_name}_{column_value}格式为这些列中的每一个可能值创建一列,因此可以得到类似HomeTeam_Arsenal的列

变量的问题取决于您考虑使用的模型类型。多重共线性在逻辑回归中可能是一个问题,但在随机森林中就不是这样了。另外,永远不要忘记商业知识非常重要,所以如果你知道球队在主场或客场比赛中的胜率不同,那么,你应该在你的模型中包括这一点。如果您不确定,则测试这两个选项。机器学习是一个非常迭代的过程,所以不要害怕尝试许多选项

相关问题 更多 >