def func1(): #season 2016-2017 csv_file1 = open('TeamMatchups.csv', 'r') reader1 = csv.reader(csv_file1) i = 0 j = 0 noOfPredictions = 0 minutesPlayed = defaultdict(dict) minutesPlayedEstimate = defaultdict(dict) NumberMinutes = defaultdict(dict) playerRating = defaultdict(dict) plusminus = defaultdict(dict) duplicate = defaultdict(dict) tempTeam = defaultdict(dict) check = defaultdict(dict) TeamRating = defaultdict(dict) HomeAdv = defaultdict(dict) checklist = [] flog = 1 match = 0 avg = [] number = 0 flag = 0 Dray = [] James = [] Bruno = [] Curry = [] Jordan = [] CLE = [] for row1 in reader1: plusminus1 = defaultdict(dict) plusminus2 = defaultdict(dict) if i > 0: s = re.split('\W+', row1[2]) # print(s) if len(s) == 2: Team1 = s[0] Team2 = s[1] flag = 1 c = Team1 + Team2 HomeAdv[Team1] = 0 HomeAdv[Team2] = 100 if (flag == 1): flag = 0 for fixedPlayer in minutesPlayed[Team1]: minutesPlayed[Team1][fixedPlayer] = 0 plusminus1[fixedPlayer] = 0 for fixedPlayer in minutesPlayed[Team2]: minutesPlayed[Team2][fixedPlayer] = 0 plusminus2[fixedPlayer] = 0 csv_file2 = open('PlayerDetails.csv', 'r') reader2 = csv.reader(csv_file2) for row2 in reader2: if j > 0: if (Team1 == row2[1] or Team2 == row2[1]) and row1[1] == row2[2]: # print(row2[0],"playername",row2[1],"team",row2[2],"date") # time.sleep(2) if int(row2[5]) != 0: avg.append(int(row2[6]) / int(row2[5])) number += 1 if Team1 == row2[1]: minutesPlayed[Team1][row2[0] + Team1] = int( row2[5]) / (int(row1[4])) plusminus1[row2[0] + Team1] = int(row2[7]) if check[row2[0] + Team1] == {}: playerRating[row2[0] + Team1] = 1000 #print(row2[0]) check[row2[0] + Team1] = 'Filled' elif Team2 == row2[1]: minutesPlayed[Team2][row2[0] + Team2] = int( row2[5]) / (int(row1[4])) plusminus2[row2[0] + Team2] = int(row2[7]) if check[row2[0] + Team2] == {}: playerRating[row2[0] + Team2] = 1000 #print(row2[0]) check[row2[0] + Team2] = 'Filled' else: print( "HHHHHHHHHEEEEEEEEEEELLLLLLLLLLOOOOOOOOOOOOOOOOOOOOOOOOOOO" ) j = j + 1 j = 0 csv_file2.close() checklist.append(c) for fixedPlayer in minutesPlayed[Team1]: if minutesPlayedEstimate[fixedPlayer] == {}: #print(fixedPlayer) minutesPlayedEstimate[fixedPlayer] = minutesPlayed[ Team1][fixedPlayer] NumberMinutes[fixedPlayer] = 1 else: minutesPlayedEstimate[fixedPlayer] = ( NumberMinutes[fixedPlayer] * minutesPlayedEstimate[fixedPlayer] + minutesPlayed[Team1][fixedPlayer]) / ( NumberMinutes[fixedPlayer] + 1) NumberMinutes[ fixedPlayer] = NumberMinutes[fixedPlayer] + 1 for fixedPlayer in minutesPlayed[Team2]: if minutesPlayedEstimate[fixedPlayer] == {}: minutesPlayedEstimate[fixedPlayer] = minutesPlayed[ Team2][fixedPlayer] NumberMinutes[fixedPlayer] = 1 else: minutesPlayedEstimate[fixedPlayer] = ( NumberMinutes[fixedPlayer] * minutesPlayedEstimate[fixedPlayer] + minutesPlayed[Team2][fixedPlayer]) / ( NumberMinutes[fixedPlayer] + 1) NumberMinutes[ fixedPlayer] = NumberMinutes[fixedPlayer] + 1 sum1 = 0 sum2 = 0 for fixedPlayer in minutesPlayed[Team1]: sum1 += minutesPlayedEstimate[fixedPlayer] for fixedPlayer in minutesPlayed[Team2]: sum2 += minutesPlayedEstimate[fixedPlayer] for fixedPlayer in minutesPlayed[Team1]: minutesPlayedEstimate[fixedPlayer] = ( minutesPlayedEstimate[fixedPlayer] * 1) / sum1 #print(minutesPlayedEstimate[fixedPlayer]) #time.sleep(2) for fixedPlayer in minutesPlayed[Team2]: minutesPlayedEstimate[fixedPlayer] = ( minutesPlayedEstimate[fixedPlayer] * 1) / sum2 #print(minutesPlayedEstimate[fixedPlayer]) #time.sleep(2) # rating update for the 2 teams m1 = 0 m2 = 0 p1 = 0 p2 = 0 for players in minutesPlayed[Team1]: m1 += playerRating[players] * minutesPlayedEstimate[players] p1 += playerRating[players] for players in minutesPlayed[Team2]: m2 += playerRating[players] * minutesPlayedEstimate[players] p2 += playerRating[players] #print("%%%%%%%%%%%%%%%%% Before Update %%%%%%%%%%%%%%%%") #print("Updated rating for {}".format(Team1), round(p1)) #print("updated rating for {}".format(Team2), round(p2)) #print("p2",p2) #print("total1",p1+p2) sumTeam = 0 for Teeam in minutesPlayed: for player in minutesPlayed[Teeam]: sumTeam = sumTeam + playerRating[player] # print(Teeam,TeamRating[Teeam]) #print(Team1,p1) #print(Team2,p2) #print("total1",p1+p2) #print("Sum of team rating1", sumTeam) #time.sleep(2) m1 += HomeAdv[Team1] m2 += HomeAdv[Team2] if m1 > m2: outcome = 'W' else: outcome = 'L' if outcome == row1[3]: noOfPredictions = noOfPredictions + 1 W = 1 else: W = 0 match = match + 1 print(Team1, m1, row1[3], Team2, m2, noOfPredictions, match, "Prediction Rate", noOfPredictions / match) playerRating = f.elo(playerRating, minutesPlayed, Team1, Team2, int(row1[4]), plusminus1, plusminus2, 500, 10000) m1 = 0 m2 = 0 p1 = 0 p2 = 0 for players in minutesPlayed[Team1]: m1 += playerRating[players] * minutesPlayedEstimate[players] p1 += playerRating[players] for players in minutesPlayed[Team2]: m2 += playerRating[players] * minutesPlayedEstimate[players] p2 += playerRating[players] if Team1 == "CLE": CLE.append(m1) print("UTA", m1) elif Team2 == "CLE": CLE.append(m2) print("UTA", m2) TeamRating[Team1] = m1 TeamRating[Team2] = m2 i = i + 1 time.sleep(5) return (CLE)
outcome = 'L' if outcome == row1[3]: noOfPredictions = noOfPredictions + 1 W = 1 else: W = 0 match = match + 1 if match == 1230: print(K[k], N[n], noOfPredictions, match, "Prediction Rate", noOfPredictions / match) P[k][n] = (noOfPredictions / match) * 100 K1[no] = K[k] N1[no] = N[n] no += 1 playerRating = f.elo(playerRating, minutesPlayed, Team1, Team2, int(row1[4]), plusminus1, plusminus2, K[k], N[n]) m1 = 0 m2 = 0 p1 = 0 p2 = 0 for players in minutesPlayed[Team1]: m1 += playerRating[players] * minutesPlayedEstimate[ players] p1 += playerRating[players] for players in minutesPlayed[Team2]: m2 += playerRating[players] * minutesPlayedEstimate[ players] p2 += playerRating[players] TeamRating[Team1] = m1 TeamRating[Team2] = m2
Team2 = s[1] if row[3] == 'W': s1 = 1 s2 = 0 else: s1 = 0 s2 = 1 #if (s1 == 1 and teams_rating[Team1] > (teams_rating[Team2] + 100)) or (s2 == 1 and (100 + teams_rating[Team2]) > teams_rating[Team1]): #accuracy += 1 r1 = teams_rating[Team1] r2 = teams_rating[Team2] + 100 #y_true.append(s1) #p=P(r1,r2) #y_pred.append(p) teams_rating[Team1], teams_rating[Team2] = f.elo( teams_rating[Team1], teams_rating[Team2], K[k], s1, s2, Team1, Team2) #print(Team1, "rating", teams_rating[Team1], Team2, "rating", teams_rating[Team2]) # time.sleep(2) j = j + 1 else: j = 1 csv_file1 = open('TeamMatchups.csv', 'r') reader1 = csv.reader(csv_file1) j = 0 accuracy = 0 for row in reader1: if j != 0 and j <= 615: s = re.split('\W+', row[2]) #print(s) if len(s) == 2:
m1 += HomeAdv[Team1] m2 += HomeAdv[Team2] if m1 > m2: outcome = 'W' else: outcome = 'L' if outcome == row1[3]: noOfPredictions = noOfPredictions + 1 W = 1 else: W = 0 match = match + 1 print(Team1, m1, row1[3], Team2, m2, noOfPredictions, match, "Prediction Rate", noOfPredictions / match) playerRating = f.elo(playerRating, minutesPlayed, Team1, Team2, int(row1[4]), plusminus1, plusminus2, 500, 10000) if Team1 == "UTA" or Team2 == "UTA": #print(playerRating["Draymond GreenGSW"]) #Dray.append(playerRating["Draymond GreenGSW"]) if playerRating["Gordon HaywardUTA"] != {}: print("Gordon Hayward", playerRating["Gordon HaywardUTA"]) Curry.append(playerRating["Gordon HaywardUTA"]) else: Curry.append(0) if Team1 == "CLE" or Team2 == "CLE": James.append(playerRating["LeBron JamesCLE"]) if Team1 == "TOR" or Team2 == "TOR": if playerRating["Bruno CabocloTOR"] != {}: Bruno.append(playerRating["Bruno CabocloTOR"]) if Team1 == "LAC" or Team2 == "LAC":