我试图预测球迷是否会参加体育赛事。我的数据(pandas DataFrame)包含粉丝信息(人口统计等),以及他们是否参加过最后10场比赛(g1_attend - g10_attend)。
fan_info age neighborhood g1_attend g2_attend ... g1_neigh_turnout
2717 22 downtown 0 1 .47
2219 67 east side 1 1 .78
如果g11_attend在DataFrame中不存在,我如何预测他们是否会参加g11_attend?
最初,我打算在scikit-learn中应用一些基本模型进行分类,并且可能只需在数据框架中添加一个g11_attend列。由于某些原因,这一切让我很困惑。我现在想,把它当作一个时间序列更合适,并且正在研究其他模型。
答案 0 :(得分:2)
你是对的,你不能只为分类器添加一个新类别(即输出类) - 这需要一些时间序列。
但是在时间序列上使用分类器有一种相当标准的技术。断言(有条件)时间独立,并使用窗口。
简而言之,我们假设某人是否参与游戏只取决于我们捕获的变量,而不是某些其他时间因素(或其他一般因素)。 即我们假设我们可以翻译他们在一年中参加的游戏历史,它仍然是相同的概率。 这显然是错误的,但我们仍然这样做,因为机器学习技术将处理数据中的一些噪音。 这显然是错误的,因为有些人会在冬天避免游戏,因为它太冷等等。
现在在分类器上:
我们有输入,我们只需要一个输出。 所以基本的想法是我们要训练一个模型, 作为输入,他们是否参加了前9场比赛,预测他们是否会参加第10次
因此输出 1 age
,neighbourhood
,g1_attend
,g2_attend
,... g9_attend
输出为g10_attend
- 二进制值。
这为我们提供了培训数据。
然后,当它有时间进行测试时,我们会移动所有内容:g1_attend
切换g2_attend
,g2_attend
切换g3_attend
和... {{1} } g9_attend
。
然后我们的预测输出将是g10_attend
。
您还可以训练具有不同窗口大小的多个模型。
例如,仅查看最近2场比赛,预测第3场比赛的出席率。
这可以为您提供更多的训练数据,因为您可以这样做。
每行g11_attend
- > g1,g2
和g3
- > g2,g3
等。
您可以训练一组不同的窗口大小,并将结果与某些整体技术合并。
特别是培训g4
- >是个好主意。 g1,...,g8
,
然后使用它来预测g9
(使用g10
作为输入)
检查它是否有效。
我建议将来你可以在Cross Validated上提出这些问题。虽然这可能是关于堆栈溢出的主题,但它更多的是主题,并且有更多的统计学家和机器学习专家。
1 我建议暂时放弃g2,...,g9
作为输入。我只是觉得它不会让你到任何地方,但解释原因是超出这个问题的。