【发布时间】:2020-08-06 16:49:39
【问题描述】:
目标
我想用 Scikit-learn 训练一个模型来预测赛马的结果。我有一个 CSV 文件,其中包含多个特征,例如位置、年龄、体重、马名、种族 ID 等。
问题
在我的原始 CSV 文件中,每匹马都以一行表示。从 1 到 8 的位置,每场比赛由 8 行组成。然而,当我训练我的模型时,模型将每一行视为一个单独的事件(比赛),因此表现不佳。
方法
我试图解决这个问题并创建了一个新的 CSV 文件,其中每一行代表一个种族,特征从 position1、age1、weight1、horse_name1、race_id1 到 position8、age8、weight8、horse_name8、race_id8 (见下文)。但是,在这种情况下使用 Multioutput,我的模型根本没有进行训练,但注意到 age1、weight1 是获胜者的列,并且确实获得了 100% 的准确率。
想法
不知道有没有办法解决这个问题。也许可以使用原始文件,但以某种方式告诉模型必须将具有相同race_id 的行视为一个事件。我可以考虑使用 groupby(race_id) 但我无法将新组输入模型。您也可以为每场比赛使用一个袋子,例如在对文本数据进行预测时。
我实际上被困在这里,所以任何建议都非常感谢:)
ORIGINAL DF
position horse age weight race_id
1 name1 3y 900 1
2 name2 4y 800 1
3 name3 5y 760 1
... ... ... ... ...
8 name8 7y 980 1
1 name9 4y 880 2
... ... ... ... ...
8 name16 5y 770 2
NEW DF
position1 horse1 weight1 race_id1 ... position8 horse8 weight8 race_id8
1 name1 900 1 8 name8 980 1
1 name9 880 2 8 name16 770 2
【问题讨论】:
-
我想知道
ORIGINAL DF的horse列是否是唯一的。您能否分享一小部分数据集以供我们帮助您? -
既然您提到了准确性,您是否将其视为分类?将其视为回归(或排名)会更好吗?另外,如果您发布过程回归结果以将它们转换为 1-8 个位置,我觉得对每一行的独立处理不是一个大问题
-
@ShihabShahriarKhan 你说得对,我将其视为职位的分类。我同意你的观点,将其视为回归可能也是一个好主意,预测完成时间并从 1 到 8 排序。但是,我认为如果模型将每场比赛视为一个事件,预测会更准确。例如,如果一匹马的完赛时间非常好,那么其他马也可能会更好,因为其他马也在冲。
-
@HenriqueBranco 马列的独特之处在于“name1”、“name2”是针对那匹马的。然而,同一匹马可能会在数据中出现多次,因为它出现在多个比赛中我还没有一个特定的数据集,但是查看可用的数据集,它们的结构都相同,我无法克服我的问题
-
我也有同样的问题,你解决了吗?如果是这样,您可以发布或链接到解决方案吗?谢谢
标签: python scikit-learn