File size: 4,593 Bytes
f2d503a
 
 
 
 
 
 
946b72e
 
 
 
 
 
 
f2d503a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
946b72e
f2d503a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74bd6c4
f2d503a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
74bd6c4
f2d503a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import streamlit as st
import pandas as pd
import snowflake.connector
import numpy as np
import tensorflow as tf
import random
from tensorflow.keras.models import load_model
import os

USER = os.environ['USER']
PASSWORD = os.environ['PASSWORD']
ACCOUNT = os.environ['ACCOUNT']
WAREHOUSE = os.environ['WAREHOUSE']
DATABASE = os.environ['DATABASE']


def on_page_load():
    st.set_page_config(layout="wide")
on_page_load()

stats = st.session_state.away_stats    
teams_good = True
winner_prediction = 0
away_point_prediction = 0
home_point_prediction = 0

query_string = ('SELECT * FROM (select * from NBA where PTS > {}) sample (2 rows) UNION '.format(stats[0]))
query_string += ('SELECT * FROM (select * from NBA where REB > {}) sample (1 rows) UNION '.format(stats[1]))
query_string += ('SELECT * FROM (select * from NBA where AST > {}) sample (1 rows) UNION '.format(stats[2]))
query_string += ('SELECT * FROM (select * from NBA where STL > {}) sample (1 rows);'.format(stats[3]))

def get_away_team(cnx, query_string):
    with cnx.cursor() as cur:
        cur.execute(query_string)
        players = cur.fetchall()
        while len(players) != 5:
            cur.execute(query_string)   
            players = cur.fetchall()
    return players    
              
def find_away_team():
    cnx = snowflake.connector.connect(user=USER, password=PASSWORD, account=ACCOUNT, warehouse=WAREHOUSE, database=DATABASE)

    data = get_away_team(cnx, query_string)
    cnx.close()
    df = pd.DataFrame(data, columns=['FULL_NAME', 'AST', 'BLK', 'DREB', 'FG3A', 'FG3M', 'FG3_PCT', 'FGA', 'FGM', 'FG_PCT', 'FTA', 'FTM', 'FT_PCT','GP', 'GS', 'MIN', 'OREB', 'PF', 'PTS', 'REB', 'STL', 'TOV', 'FIRST_NAME', 'LAST_NAME', 'FULL_NAME_LOWER', 'FIRST_NAME_LOWER', 'LAST_NAME_LOWER', 'IS_ACTIVE'])
    return df   

if not st.session_state.home_team_df.shape[0] == 5:
    st.markdown("<h3 style='text-align: center; color: red;'>Your Team Doesn't Have 5</h3>", unsafe_allow_html=True)
    away_data = pd.DataFrame()
    teams_good = False
    winner = ''
else:
    away_data = find_away_team()
    
def analyze_stats(home_stats, away_stats):
    home=[]
    away=[]
    for j in range(len(home_stats)):
        home += home_stats[j]
    for j in range(len(away_stats)):
        away += away_stats[j]
    return np.array(home).reshape(1,-1), np.array(away).reshape(1,-1), np.array(home + away).reshape(1, -1)

def get_score_board(p_pred, w_score):
    score = []
    quarter_score = int(w_score/4)
    score.append(quarter_score + random.randint(-7, 7))
    score.append(quarter_score + random.randint(-3, 3))
    score.append(quarter_score + random.randint(-8, 8))
    score.append(w_score - (score[0] + score[1] + score[2]))
    score.append(w_score)
    return score

if teams_good:
    #first pass algo to determine winner
    cols = ['PTS', 'OREB', 'DREB', 'AST', 'STL', 'BLK', 'TOV', 'FG3_PCT', 'FT_PCT', 'FGM']
    home_stats = st.session_state.home_team_df[cols].values.tolist()
    away_stats = away_data[cols].values.tolist()
    home, away, winner = analyze_stats(home_stats, away_stats)
    
    winner_model = load_model('winner.keras')

    winner_sigmoid= winner_model.predict(winner)
    winner_prediction = np.round(winner_sigmoid[0][0])

    score = []
    winner_score = random.randint(90, 130)
    loser_score = random.randint(80, 120)
    while winner_score <= loser_score:
        winner_score = random.randint(90, 130)
        loser_score = random.randint(80, 120)
        

    if winner_prediction == 1:
        score.append(get_score_board(winner_prediction, winner_score))
        score.append(get_score_board(away_point_prediction, loser_score))
        winner = 'Winner'
    else:
        score.append(get_score_board(winner_prediction, loser_score))
        score.append(get_score_board(away_point_prediction, winner_score))
        winner = 'Loser'

    box_score = pd.DataFrame(score , columns=['1', '2', '3', '4', 'Final'], index=['Home Team', 'Away Team'] )
    
    print(f"Prediction: {winner_sigmoid[0][0]}")

st.markdown("<h1 style='text-align: center; color: steelblue;'>Home Team</h1>", unsafe_allow_html=True)
st.dataframe(st.session_state.home_team_df)
if teams_good:
    print(f"Teams Good")
    st.markdown(f"<h3 style='text-align: center; color: steelblue;'>{winner}</h3>", unsafe_allow_html=True)
    col1, col2, col3 = st.columns(3)
    with col2:
      st.dataframe(box_score)
st.markdown("<h1 style='text-align: center; color: steelblue;'>Away Team</h1>", unsafe_allow_html=True)
st.dataframe(away_data)

if st.button("Play New Team"):
    print("New Team")