SVM;训练数据不包含目标

时间:2016-09-04 00:49:48

标签: python pandas scikit-learn modeling

我试图预测球迷是否会参加体育赛事。我的数据(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列。由于某些原因,这一切让我很困惑。我现在想,把它当作一个时间序列更合适,并且正在研究其他模型。

1 个答案:

答案 0 :(得分:2)

你是对的,你不能只为分类器添加一个新类别(即输出类) - 这需要一些时间序列。

但是在时间序列上使用分类器有一种相当标准的技术。断言(有条件)时间独立,并使用窗口。

简而言之,我们假设某人是否参与游戏只取决于我们捕获的变量,而不是某些其他时间因素(或其他一般因素)。 即我们假设我们可以翻译他们在一年中参加的游戏历史,它仍然是相同的概率。 这显然是错误的,但我们仍然这样做,因为机器学习技术将处理数据中的一些噪音。 这显然是错误的,因为有些人会在冬天避免游戏,因为它太冷等等。

现在在分类器上:

我们有输入,我们只需要一个输出。 所以基本的想法是我们要训练一个模型, 作为输入,他们是否参加了前9场比赛,预测他们是否会参加第10次

因此输出 1 ageneighbourhoodg1_attendg2_attend,... g9_attend 输出为g10_attend - 二进制值。

这为我们提供了培训数据。

然后,当它有时间进行测试时,我们会移动所有内容:g1_attend切换g2_attendg2_attend切换g3_attend和... {{1} } g9_attend。 然后我们的预测输出将是g10_attend

您还可以训练具有不同窗口大小的多个模型。 例如,仅查看最近2场比赛,预测第3场比赛的出席率。 这可以为您提供更多的训练数据,因为您可以这样做。 每行g11_attend - > g1,g2g3 - > g2,g3等。

您可以训练一组不同的窗口大小,并将结果与​​某些整体技术合并。

特别是培训g4 - >是个好主意。 g1,...,g8, 然后使用它来预测g9(使用g10作为输入) 检查它是否有效。

我建议将来你可以在Cross Validated上提出这些问题。虽然这可能是关于堆栈溢出的主题,但它更多的是主题,并且有更多的统计学家和机器学习专家。

1 我建议暂时放弃g2,...,g9作为输入。我只是觉得它不会让你到任何地方,但解释原因是超出这个问题的。