コード例 #1
0
ファイル: StatMonkey.py プロジェクト: benslawski/jimmy_jr
    def __init__(self):
        self.fan = FanMonkey()

        atbats = ['h', 'v']

        edge_file = open('data/edges/edges.dat', 'r')
        possible_edges = json.loads(edge_file.read())
        edge_file.close()

        self.edges = {}
        self.inState = {}
        for batter in atbats:
            self.edges[batter] = deepcopy(possible_edges)
            self.inState[batter] = dict(map(lambda k: (k, 0), possible_edges.keys()))

            for from_state in self.edges[batter]:
                for to_state in self.edges[batter][from_state]:
                    self.edges[batter][from_state][to_state] = {'count':0, 'score':self.edges[batter][from_state][to_state]}

        if STAT_MONKEY_TALK:
            print self.edges
コード例 #2
0
ファイル: StatMonkey.py プロジェクト: benslawski/jimmy_jr
class StatMonkey:

    def __init__(self):
        self.fan = FanMonkey()

        atbats = ['h', 'v']

        edge_file = open('data/edges/edges.dat', 'r')
        possible_edges = json.loads(edge_file.read())
        edge_file.close()

        self.edges = {}
        self.inState = {}
        for batter in atbats:
            self.edges[batter] = deepcopy(possible_edges)
            self.inState[batter] = dict(map(lambda k: (k, 0), possible_edges.keys()))

            for from_state in self.edges[batter]:
                for to_state in self.edges[batter][from_state]:
                    self.edges[batter][from_state][to_state] = {'count':0, 'score':self.edges[batter][from_state][to_state]}

        if STAT_MONKEY_TALK:
            print self.edges


    def recordGame(self, game_data):
        self.fan.newGame()
        batter = 'v'
        for inning in game_data['plays']:
            current_state = '0-0'

            for play in inning:
                self.inState[batter][current_state] += 1
                new_state, score = self.fan.runPlay(play)

                if not new_state:
                    if STAT_MONKEY_TALK:
                        print '[Stat] unknown play:', play
                    continue

                if new_state == '0-3' and STAT_MONKEY_TALK:
                    print '[Stat] 3 outs'

                if STAT_MONKEY_TALK:
                    print '[Stat]', play[0], current_state, '-->', new_state, score, play[1]

                self.edges[batter][current_state][new_state]['count'] += 1
                current_state = new_state

            if STAT_MONKEY_TALK:
                print '[Stat] switch batters'

            if batter == 'v':
                batter = 'h'
            if batter == 'h':
                batter = 'v'


    def getEdges(self):
        outedges = copy(self.edges)

        for batter in atbats:
            for from_state in self.edges[batter]:
                for to_state in from_state:
                    outedges[batter][from_state][to_state]['prob'] = float(outedges[batter][from_state][to_state]['count']) / float(self.inState[batter][from_state])
                    del outedges[batter][from_state][to_state]['count']

        return outedges