我试图根据历史体育运动的表现来评估一个模型。
我有一个由以下列组成的数据集:
feature1 | ... | featureX | oddsPlayerA | oddsPlayerB | winner
该模型将进行回归,其中输出是playerA赢得比赛的几率
据我了解,我可以使用自定义评分功能返回" money"如果每次条件为真时下注,该模型就会产生,并使用该值来衡量模型的适应度。条件类似于:
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)
在自定义评分功能中,我需要接收通常的参数,如&#34; ground_truth,predictions&#34; (其中ground_truth是胜利者[],预测是predict_player_A_win_odds []),但是字段&#34; oddsPlayerA&#34;和&#34; oddsPlayerB&#34;来自数据集(这是问题!)。
如果使用与原始数据集完全相同的顺序调用自定义评分函数,则从数据集中检索所需的额外数据将是微不足道的。但实际上,当使用交叉验证方法时,它得到的数据都是混淆的(与原始数据相比)。
我尝试过最明显的方法,即用[oddsA,oddsB,winner](尺寸[n,3])传递y变量,但scikit并不允许。
那么,我怎样才能将数据集中的数据导入到自定义评分函数中,该函数既不是X也不是y,但仍然是&#34;捆绑在一起&#34;按照相同的顺序?
答案 0 :(得分:3)
目前没有办法真正做到这一点,抱歉。您可以在交叉验证折叠上编写自己的循环,这不应该很难。您无法使用GridSearchCV
或cross_val_score