Cal Mitchell commited on
Commit
7a4fc48
1 Parent(s): 5f26252

fixed mistake

Browse files
README.md CHANGED
@@ -1,12 +1,30 @@
1
  # NBA Predictions
2
 
3
- This repo contains AI model code and weights which predicts the outcome of NBA games. Its output represents the chance that a given point spread will occur.
 
 
4
 
5
  The model requires 8 players on the home and away teams, plus their ages, as input. It will then output probabilities for each point spread between -20 and +20 points, from the home team's point of view.
6
 
7
- For example, the following text and chart shows the model predicting the home team with a 77% chance to win and a 14% chance of winning by 20 or more points. This kind of chart is indicative of a dominant team playing at home. Most games will have more of a bell curve shape to them.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8
 
9
- ![NBA prediction graph](prediction.png)
10
 
11
  ## Installation
12
 
 
1
  # NBA Predictions
2
 
3
+ This repo contains AI model code and weights which predicts the outcome of NBA games. Its output represents the chance that given point spreads will occur.
4
+
5
+ ## Intro
6
 
7
  The model requires 8 players on the home and away teams, plus their ages, as input. It will then output probabilities for each point spread between -20 and +20 points, from the home team's point of view.
8
 
9
+ For example, the following text and chart represents the model's opinion on the Boston Celtics vs the Denver Nuggets. A matchup I am personally terrified of as a Celtics fan.
10
+
11
+ Let's start with both teams at pretty much full strength, with the Celtics at home. In this example, the model predicts the celtics to win around 3 in every 4 games, with a 14% chance of the Celtics winning by 20 or more.
12
+
13
+ ![Full strength Celtics vs full strength Denver. Celtics at home.](celtics-at-home.png)
14
+
15
+ Let's flip the location and see what the model thinks would happen if the Celtics had to travel to Denver. Interestingly, the Model now favors Denver to win with 55% confidence.
16
+
17
+ ![Full strength Celtics vs full strength Denver. Denver at home.](denver-at-home.png)
18
+
19
+ Now here's the really fun part - mixing and matching players. Most people would say Jokic is the best player in the league at the time of writing, and Tatum is a notch below him. A lot of people would also say that the Celtics are an incredibly deep team, as far as their starters are concerned, while the Nuggets are a bit more reliant on their top stars.
20
+
21
+ All of this is to say that taking Jokic off the Nuggets should have more of an effect than taking Tatum off the Celtics. The chart below shows Denver at home, without Jokic in the lineup. He has been replaced by Peyton Watson. As you can see, Denver's win percentage dropped by 13%.
22
+
23
+ ![Celtics ful strength vs Denver without Jokic. Denver at home.](denver-at-home-no-tatum.png)
24
+
25
+ Let's keep the game in Denver, put the Nuggets back at full strength, and replace Tatum with Pritchard. As you can see, the Nuggets are now projected to win 66% of the time. That sounds about right to me!
26
 
27
+ ![Celtics without Tatum vs full strength Denver. Celtics at home.](denver-at-home-no-tatum.png)
28
 
29
  ## Installation
30
 
celtics-at-home-no-jokic.png ADDED
celtics-at-home-no-tatum.png ADDED
celtics-at-home.png ADDED
denver-at-home-no-jokic.png ADDED
denver-at-home-no-tatum.png ADDED
denver-at-home.png ADDED
example.ipynb CHANGED
@@ -2,7 +2,7 @@
2
  "cells": [
3
  {
4
  "cell_type": "code",
5
- "execution_count": 1,
6
  "metadata": {},
7
  "outputs": [],
8
  "source": [
@@ -38,40 +38,14 @@
38
  },
39
  {
40
  "cell_type": "code",
41
- "execution_count": 2,
42
- "metadata": {},
43
- "outputs": [],
44
- "source": [
45
- "# Change player and age tokens here!\n",
46
- "# You can find these values in player_tokens.csv and age_tokens.csv\n",
47
- "# You must provide exactly 8 player tokens and 8 age tokens for each team.\n",
48
- "\n",
49
- "# Boston Celtics final game of 2023-24 season roster\n",
50
- "home_player_tokens = [1994, 5039, 5027, 4981, 4972, 5004, 4416, 4983]\n",
51
- "home_age_tokens = [11, 12, 19, 14, 23, 11, 13, 13]\n",
52
- "\n",
53
- "# Dallas Mavericks final game of 2023-24 season roster\n",
54
- "away_player_tokens = [5117, 5097, 4956, 5109, 55, 149, 5121, 5112]\n",
55
- "away_age_tokens = [10, 17, 10, 12, 10, 5, 8, 17]\n",
56
- "\n",
57
- "# The model usually gives the home team a bump in win probability.\n",
58
- "# Change this to \"True\" to swap home and away teams.\n",
59
- "swap_home_away = False\n",
60
- "if swap_home_away:\n",
61
- " home_player_tokens, away_player_tokens = away_player_tokens, home_player_tokens\n",
62
- " home_age_tokens, away_age_tokens = away_age_tokens, home_age_tokens"
63
- ]
64
- },
65
- {
66
- "cell_type": "code",
67
- "execution_count": 3,
68
  "metadata": {},
69
  "outputs": [
70
  {
71
  "name": "stdout",
72
  "output_type": "stream",
73
  "text": [
74
- "Home team win probability: 0.77\n"
75
  ]
76
  },
77
  {
@@ -80,13 +54,13 @@
80
  "<BarContainer object of 40 artists>"
81
  ]
82
  },
83
- "execution_count": 3,
84
  "metadata": {},
85
  "output_type": "execute_result"
86
  },
87
  {
88
  "data": {
89
- "image/png": "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",
90
  "text/plain": [
91
  "<Figure size 640x480 with 1 Axes>"
92
  ]
@@ -96,7 +70,32 @@
96
  }
97
  ],
98
  "source": [
99
- "# Run this cell to see the spread probabilities!\n",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  "\n",
101
  "assert len(home_player_tokens) == players_per_team\n",
102
  "assert len(home_age_tokens) == players_per_team\n",
 
2
  "cells": [
3
  {
4
  "cell_type": "code",
5
+ "execution_count": 7,
6
  "metadata": {},
7
  "outputs": [],
8
  "source": [
 
38
  },
39
  {
40
  "cell_type": "code",
41
+ "execution_count": 18,
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
  "metadata": {},
43
  "outputs": [
44
  {
45
  "name": "stdout",
46
  "output_type": "stream",
47
  "text": [
48
+ "Home team win probability: 0.66\n"
49
  ]
50
  },
51
  {
 
54
  "<BarContainer object of 40 artists>"
55
  ]
56
  },
57
+ "execution_count": 18,
58
  "metadata": {},
59
  "output_type": "execute_result"
60
  },
61
  {
62
  "data": {
63
+ "image/png": "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VVJSoo8++mhwGx0A6enp5x2jtWvXhrutkFVVVSk9PV3x8fHKycnRvn37wt3SJfvOd75z3jGaMmVKuNsK2R/+8Ad99atfVWpqqqKios57cK0xRmVlZRo3bpxGjBihvLw8HT58ODzNBqmvsX3jG98471jOnz8/PM0GqaKiQrNnz9bVV1+tsWPHqqCgQIcOHfKrOXv2rJYuXarRo0frqquu0r333nvezWAHC4Gln9588015vV796Ec/0uuvv65nn31W1dXVWrVqla+ms7NT8+bN04QJE9TU1KR169bpO9/5ju+eM7br6enRggUL9PDDD1+0buvWrXr//fd9y1C4X05fY+vt7VV+fr56enrU2Nion/zkJ3r++edVVlY2yJ0OjO9+97t+x2j58uXhbikk27dvl8vlUnl5uZqbm5WRkSGn06n29vZwt3bJPv/5z/sdoz/+8Y/hbilkXV1dysjIUFVVVcCvP/300/r+97+v6upqvfrqqxo5cqScTqfOnj07yJ0Gr6+xSdL8+fP9juUvf/nLQewwdHv37tXSpUv1yiuvqK6uTufOndO8efPU1dXlq/nWt76l3/3ud9qxY4f27t2r48eP65577glPw30+bQgX9PTTT5uJEyf6Xv/gBz8w11xzjenu7vate/zxx83kyZPD0V7Itm7dapKSkgJ+TZJ54YUXBrWfgXShse3Zs8dER0cbj8fjW/fDH/7QJCYm+h3PoWDChAnm2WefDXcbAyI7O9ssXbrU97q3t9ekpqaaioqKMHZ16crLy01GRka427gs/u/vCK/XaxwOh1m3bp1v3alTp0xcXJz55S9/GYYOQxfo919RUZG56667wtLPQGtvbzeSzN69e40xHx+n4cOHmx07dvhq3njjDSPJuN3uQe+PGZZL0NHRoWuvvdb32u1269Zbb1VsbKxvndPp1KFDh/S///u/4Wjxsli6dKmSk5OVnZ2tLVu29O+x4JZzu92aMWOG7waI0sfHrrOzU6+//noYOwvN2rVrNXr0aN10001at27dkPxoq6enR01NTcrLy/Oti46OVl5entxudxg7GxiHDx9WamqqbrjhBn39619Xa2truFu6LN555x15PB6/45iUlKScnJyIOI6S1NDQoLFjx2ry5Ml6+OGH9fe//z3cLYWko6NDknx/15qamnTu3Dm/YzdlyhRdf/31YTl2Q/JpzTZ4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",
64
  "text/plain": [
65
  "<Figure size 640x480 with 1 Axes>"
66
  ]
 
70
  }
71
  ],
72
  "source": [
73
+ "# Change player and age tokens here!\n",
74
+ "# You can find these values in player_tokens.csv and age_tokens.csv\n",
75
+ "# You must provide exactly 8 player tokens and 8 age tokens for each team.\n",
76
+ "\n",
77
+ "# Denver Nuggets first game of 2023-24 season roster\n",
78
+ "home_player_tokens = [5035, 4298, 4626, 4690, 4750, 5082, 4286, 4311]\n",
79
+ "home_age_tokens = [14, 16, 13, 12, 10, 19, 8, 8]\n",
80
+ "\n",
81
+ "# Uncomment to take Jokic off team, replace with Peyton Watson\n",
82
+ "# home_player_tokens = [4331, 4298, 4626, 4690, 4750, 5082, 4286, 4311]\n",
83
+ "# home_age_tokens = [6, 16, 13, 12, 10, 19, 8, 8]\n",
84
+ "\n",
85
+ "# Boston Celtics final game of 2023-24 season roster\n",
86
+ "away_player_tokens = [5042, 5039, 5027, 4981, 4972, 5004, 4416, 4983]\n",
87
+ "away_age_tokens = [11, 12, 19, 14, 23, 11, 13, 13]\n",
88
+ "\n",
89
+ "# Uncomment to take Tatum off team, replace with Pritchard\n",
90
+ "away_player_tokens = [4999, 5039, 5027, 4981, 4972, 5004, 4416, 4983]\n",
91
+ "away_age_tokens = [11, 12, 19, 14, 23, 11, 13, 13]\n",
92
+ "\n",
93
+ "# The model usually gives the home team a bump in win probability.\n",
94
+ "# Change this to \"True\" to swap home and away teams.\n",
95
+ "swap_home_away = False\n",
96
+ "if swap_home_away:\n",
97
+ " home_player_tokens, away_player_tokens = away_player_tokens, home_player_tokens\n",
98
+ " home_age_tokens, away_age_tokens = away_age_tokens, home_age_tokens\n",
99
  "\n",
100
  "assert len(home_player_tokens) == players_per_team\n",
101
  "assert len(home_age_tokens) == players_per_team\n",
prediction.png CHANGED
take-tatum-off-team.png ADDED