Exemplo n.º 1
0
    def rate_at_date(self, dt):
        """

        :param dt:
        :return:
        """
        games = util.get_games(dt)
        self.rate_for_games(games)
Exemplo n.º 2
0
    data = [['UConn', 64, 'Kansas', 57],
            ['UConn', 82, 'Duke', 68],
            ['Minnesota', 71, 'UConn', 72],
            ['Kansas',	69,	'UConn', 62],
            ['Duke', 81, 'Minnesota', 70],
            ['Minnesota', 52, 'Kansas', 62]]
    df = pd.DataFrame(data, columns=['hteam', 'hscore', 'ateam', 'ascore'])
    df['home_outcome'] = df.hscore > df.ascore
    df['neutral'] = False
    df['hteam_id'] = df.hteam.map(lambda x: team_ids.get(x))
    df['ateam_id'] = df.ateam.map(lambda x: team_ids.get(x))
    return df

if __name__ == "__main__":
    # df = rpi_test_data()
    games = util.get_games(date(2015, 3, 15))
    d1 = pd.read_sql("SELECT * FROM division_one WHERE year=2015", DB.conn)
    games = games.merge(d1, left_on='hteam_id', right_on='ncaaid')
    games = games.merge(d1, left_on='ateam_id', right_on='ncaaid')
    teams = util.get_teams(games)
    data = games[['hteam_id', 'ateam_id', 'home_outcome', 'neutral']].values
    agg = RPIAggregator(teams)
    map(lambda x: agg.update(x), data)
    ratings = agg.evaluate()
    teams['rpi'] = ratings[0]
    teams['sos'] = ratings[1]
    teams['w'] = agg.total_won
    teams['l'] = agg.total_played - agg.total_won
    all_teams = pd.read_sql("SELECT ncaa, ncaaid FROM teams", DB.conn)
    df = teams.merge(all_teams, left_on="team_id", right_on="ncaaid")
Exemplo n.º 3
0
        df = pd.DataFrame(ratings_with_teams, columns=['rating', 'team_id'])
        teams = pd.read_sql("SELECT ncaaid, ncaa FROM teams", DB.conn)
        return df.merge(teams, left_on="team_id", right_on="ncaaid")

    @staticmethod
    def _calculate_rpi(wp, owp, oowp):
        return 0.25 * wp + 0.5 * owp + 0.25 * oowp

    @staticmethod
    def win_factor(is_home, is_neutral=False):
        if is_neutral:
            return 1.
        elif is_home:
            return 0.6
        else:
            return 1.4

def get_true_rpi():
    url = 'http://www.cbssports.com/collegebasketball/bracketology/nitty-gritty-report'
    response = requests.get(url)
    soup = BeautifulSoup(response.content, "html.parser")
    rpi_table = soup.find('table', {'class': 'ncaa-rankings-table'})


if __name__ == "__main__":
    games = util.get_games(2015)
    teams = util.get_teams(games)
    agg = RPIAggregator()
    season_dict = agg.rate_for_every_game(teams, games)
    # rpi = agg.infinite_depth()