7

APIを使用してBetfairの Web サイトに賭けるボットを作成中です。Pythonフットボール (サッカー) の試合が行われているときに賭けたいです。

ゲームのライブ データを提供するために XML フィードをコーディングしましたが、XML フィードは Betfair が使用するサッカー チームの名前と同じ名前を常に使用するとは限りません。

たとえば、Manchester United を参照する場合、Betfair では「Man Utd」を使用する場合がありますが、XML フィードでは「Man United」またはその他のバリエーションを使用する場合があります。私は人気のある市場に限定されていないので、標準の Betfair から XML 名への変換テーブルを構築することは現実的ではありません。

ある種の確率的文字列マッチングを使用して、2 つのデータ ソースが同じチームを参照していることを示しています。

trainこれまでのところ、いくつかのベイジアン計算を行うように見える牧師で遊んできましたが、文字列を文字に分解する必要があるため、適切に使用しているとは思いませんguesser。次に、各文字が各名前に関連付けられている確率を単純に平均します。これが数学的に正しくないことは承知していますが、実行可能なヒューリスティック テストになる可能性があると考えました。

これが私のコードです:

import scorefeed
from reverend.thomas import Bayes

guesser = Bayes()
teams=['home','away']


def train(team_no, name):

    for char in name:
        guesser.train(teams[team_no], char)

def untrain(team_no, name):

    for char in name:
        guesser.untrain(teams[team_no], char)

def guess(name):

    home_guess = 0.0
    away_guess = 0.0

    for char in name:

        if len(guesser.guess(char)) > 0:

            for guess in guesser.guess(char):

                if guess[0] == teams[0]:
                    home_guess = home_guess + guess[1]
                    print home_guess
                if guess[0] == teams[1]:
                    away_guess = away_guess + guess[1]
                    print away_guess
    home_guess = home_guess / float(len(name))
    away_guess = away_guess / float(len(name))

    probs = [home_guess, away_guess]
    return probs

def game_match(betfair_game_string, feed_home, feed_away):
    home_team = betfair_game_string[0:betfair_game_string.find(' V ')]
    away_team = betfair_game_string[betfair_game_string.find('V')+2:len(betfair_game_string)]

    train(0, home_team)
    train(1, away_team)

    probs = []
    probs.append(guess(feed_home)[0])
    probs.append(guess(feed_away)[1])

    untrain(0, home_team)
    untrain(1, away_team)

    return probs



print game_match("Man Utd V Lpool", "Manchester United", "Liverpool")

現在のセットアップで生成される確率は[0.4705411764705883, 0.5555]です。アイデアや改善点があれば本当に感謝しています。

編集:私は別の考えを持っていました.Betfairとフィードで同じ試合である可能性が欲しいです. しかし、これにより、最初の名前が一致し、2 番目の名前が一致する確率が得られます。最初の名前と 2 番目の名前が一致する確率を見つける必要があります。したがって、より妥当な結果が得られると思われる次の関数をコーディングしました。

def prob_match(probs):

    prob_not_home = 1.0 - probs[0]
    prob_not_away = 1.0 - probs[1]

    prob_not_home_and_away = prob_not_home*prob_not_away
    prob_home_and_away = 1.0 - prob_not_home_and_away

    return prob_home_and_away

同じことを行う既存のライブラリのさまざまな方法や推奨事項、または確率計算を修正するためのヒントについての提案をいただければ幸いです。

4

1 に答える 1