Scikit-learn自定义分数函数需要来自X和y以外的数据集的值

joa*_*que 6 python regression scoring scikit-learn

我试图根据历史体育赛事的表现来评估一个模型.

我有一个由以下列组成的数据集:

feature1 | ... | featureX | oddsPlayerA | oddsPlayerB | winner
Run Code Online (Sandbox Code Playgroud)

该模型将进行回归,其中输出是playerA赢得比赛的几率

我的理解是,我可以使用自定义评分函数来返回模型在每次条件为真时下注的"金钱",并使用该值来衡量模型的适应性.条件类似于:

if prediction_player_A_win_odds < oddsPlayerA
   money += bet_playerA(oddsPlayerA, winner) 
if inverse_odd(prediction_player_A_win_odds) < oddsPlayerB
   money += bet_playerB(oddsPlayerB, winner) 
Run Code Online (Sandbox Code Playgroud)

在自定义评分函数中,我需要接收通常的参数,如"ground_truth,predictions"(其中ground_truth是获胜者[],预测是prediction_player_A_win_odds []),还有来自数据集的字段"oddsPlayerA"和"oddsPlayerB"(这里)是问题!).

如果使用与原始数据集完全相同的顺序调用自定义评分函数,则从数据集中检索所需的额外数据将是微不足道的.但实际上,当使用交叉验证方法时,它获得的数据全部混淆(与原始数据相比).

我尝试过最明显的方法,即用[oddsA,oddsB,winner](dimension [n,3])传递y变量,但是scikit不允许它.

那么,我如何从数据集中获取数据到自定义评分函数既不是X也不是y,但仍然以相同的顺序"捆绑在一起"?

And*_*ler 4

目前还没有办法真正做到这一点,抱歉。您可以在交叉验证折叠上编写自己的循环,这应该不难。您不能使用GridSearchCV或执行此操作cross_val_score

  • 是的。记分器界面非常新,还有一些事情我们还没有真正解决。你是对的,这将是一个有用的功能。 (2认同)