Spaces:
Running
Running
James McCool
commited on
Commit
·
dd13903
1
Parent(s):
2bd68c9
Refactor Player Data Initialization with Consistent Projection Scaling
Browse filesUpdate the player data initialization process to:
- Remove redundant duplicate row selection
- Align kill, death, and assist projection scaling methods
- Use consistent scaling approach across win and loss scenarios
- Simplify projection calculation logic
app.py
CHANGED
@@ -336,8 +336,7 @@ def init_team_data(game_count, team, opponent, win_loss_settings, kill_predictio
|
|
336 |
raw_deaths = team_data.apply(lambda row: row['wDeath%'] * opp_pos_deaths_boost_win.get(row['position'], 1), axis=1)
|
337 |
raw_assists = team_data.apply(lambda row: row['wAssist%'] * opp_pos_assists_boost_win.get(row['position'], 1), axis=1)
|
338 |
kill_scale = kill_predictions[game] / raw_kills.sum()
|
339 |
-
death_scale =
|
340 |
-
assist_scale = min(1.0, kill_predictions[game] / raw_assists.sum()) if raw_assists.sum() > 0 else 1.0
|
341 |
team_data['Kill_Proj'] = raw_kills * kill_scale
|
342 |
team_data['Death_Proj'] = raw_deaths * death_scale
|
343 |
team_data['Assist_Proj'] = raw_assists * kill_scale
|
@@ -348,9 +347,8 @@ def init_team_data(game_count, team, opponent, win_loss_settings, kill_predictio
|
|
348 |
raw_kills = team_data.apply(lambda row: row['lKill%'] * opp_pos_kills_boost_loss.get(row['position'], 1), axis=1)
|
349 |
raw_deaths = team_data.apply(lambda row: row['lDeath%'] * opp_pos_deaths_boost_loss.get(row['position'], 1), axis=1)
|
350 |
raw_assists = team_data.apply(lambda row: row['lAssist%'] * opp_pos_assists_boost_loss.get(row['position'], 1), axis=1)
|
351 |
-
kill_scale =
|
352 |
-
death_scale =
|
353 |
-
assist_scale = min(1.0, kill_predictions[game] / raw_assists.sum()) if raw_assists.sum() > 0 else 1.0
|
354 |
team_data['Kill_Proj'] = raw_kills * kill_scale
|
355 |
team_data['Death_Proj'] = raw_deaths * death_scale
|
356 |
team_data['Assist_Proj'] = raw_assists * kill_scale
|
@@ -370,16 +368,14 @@ def init_team_data(game_count, team, opponent, win_loss_settings, kill_predictio
|
|
370 |
team_data['Kill_Proj'] = team_data.apply(lambda row: row['wKill%'] * opp_pos_kills_boost_win.get(row['position'], 1), axis=1)
|
371 |
team_data['Death_Proj'] = team_data.apply(lambda row: row['wDeath%'] * opp_pos_deaths_boost_win.get(row['position'], 1), axis=1)
|
372 |
team_data['Assist_Base'] = team_data.apply(lambda row: row['wAssist%'] * opp_pos_assists_boost_win.get(row['position'], 1), axis=1)
|
373 |
-
|
374 |
-
team_data['Assist_Proj'] = team_data['wAssist%'] * assist_scale
|
375 |
team_data['CS_Proj'] = team_data.apply(lambda row: row['wCS'] * opp_pos_cs_boost_win.get(row['position'], 1), axis=1)
|
376 |
team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'CS_Proj']]
|
377 |
else:
|
378 |
team_data['Kill_Proj'] = team_data.apply(lambda row: row['lKill%'] * opp_pos_kills_boost_loss.get(row['position'], 1), axis=1)
|
379 |
team_data['Death_Proj'] = team_data.apply(lambda row: row['lDeath%'] * opp_pos_deaths_boost_loss.get(row['position'], 1), axis=1)
|
380 |
team_data['Assist_Base'] = team_data.apply(lambda row: row['lAssist%'] * opp_pos_kills_boost_loss.get(row['position'], 1), axis=1)
|
381 |
-
|
382 |
-
team_data['Assist_Proj'] = team_data['wAssist%'] * assist_scale
|
383 |
team_data['CS_Proj'] = team_data.apply(lambda row: row['lCS'] * opp_pos_cs_boost_loss.get(row['position'], 1), axis=1)
|
384 |
team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'CS_Proj']]
|
385 |
|
@@ -551,31 +547,35 @@ def init_player_data(game_count, players, opponent, win_loss_settings, kill_pred
|
|
551 |
|
552 |
for game in range(game_count):
|
553 |
if kill_predictions[game] > 0:
|
554 |
-
working_tables = player_tables[['playername', 'teamname', 'position', '
|
555 |
-
'
|
556 |
-
working_tables = working_tables.rename(columns = {'
|
557 |
-
'playername_avg_total_cs_win': 'wCS', '
|
558 |
-
'
|
559 |
team_data = working_tables.drop_duplicates(subset = ['playername'])
|
560 |
-
|
561 |
|
562 |
if win_loss_settings[game] == "Win":
|
563 |
-
|
564 |
-
|
565 |
-
|
566 |
-
|
567 |
-
|
568 |
-
team_data['
|
|
|
|
|
569 |
|
570 |
team_data['CS_Proj'] = team_data.apply(lambda row: row['wCS'] * opp_pos_cs_boost_win.get(row['position'], 1), axis=1)
|
571 |
team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'CS_Proj']]
|
572 |
else:
|
573 |
-
|
574 |
-
|
575 |
-
|
576 |
-
|
577 |
-
|
578 |
-
team_data['
|
|
|
|
|
579 |
|
580 |
team_data['CS_Proj'] = team_data.apply(lambda row: row['lCS'] * opp_pos_cs_boost_loss.get(row['position'], 1), axis=1)
|
581 |
team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'CS_Proj']]
|
@@ -591,16 +591,14 @@ def init_player_data(game_count, players, opponent, win_loss_settings, kill_pred
|
|
591 |
team_data['Kill_Proj'] = team_data.apply(lambda row: row['wKill%'] * opp_pos_kills_boost_win.get(row['position'], 1), axis=1)
|
592 |
team_data['Death_Proj'] = team_data.apply(lambda row: row['wDeath%'] * opp_pos_deaths_boost_win.get(row['position'], 1), axis=1)
|
593 |
team_data['Assist_Base'] = team_data.apply(lambda row: row['wAssist%'] * opp_pos_assists_boost_win.get(row['position'], 1), axis=1)
|
594 |
-
|
595 |
-
team_data['Assist_Proj'] = team_data['wAssist%']
|
596 |
team_data['CS_Proj'] = team_data.apply(lambda row: row['wCS'] * opp_pos_cs_boost_win.get(row['position'], 1), axis=1)
|
597 |
team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'CS_Proj']]
|
598 |
else:
|
599 |
team_data['Kill_Proj'] = team_data.apply(lambda row: row['lKill%'] * opp_pos_kills_boost_loss.get(row['position'], 1), axis=1)
|
600 |
team_data['Death_Proj'] = team_data.apply(lambda row: row['lDeath%'] * opp_pos_deaths_boost_loss.get(row['position'], 1), axis=1)
|
601 |
team_data['Assist_Base'] = team_data.apply(lambda row: row['lAssist%'] * opp_pos_kills_boost_loss.get(row['position'], 1), axis=1)
|
602 |
-
|
603 |
-
team_data['Assist_Proj'] = team_data['wAssist%']
|
604 |
team_data['CS_Proj'] = team_data.apply(lambda row: row['lCS'] * opp_pos_cs_boost_loss.get(row['position'], 1), axis=1)
|
605 |
team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'CS_Proj']]
|
606 |
|
|
|
336 |
raw_deaths = team_data.apply(lambda row: row['wDeath%'] * opp_pos_deaths_boost_win.get(row['position'], 1), axis=1)
|
337 |
raw_assists = team_data.apply(lambda row: row['wAssist%'] * opp_pos_assists_boost_win.get(row['position'], 1), axis=1)
|
338 |
kill_scale = kill_predictions[game] / raw_kills.sum()
|
339 |
+
death_scale = death_predictions[game] / raw_deaths.sum()
|
|
|
340 |
team_data['Kill_Proj'] = raw_kills * kill_scale
|
341 |
team_data['Death_Proj'] = raw_deaths * death_scale
|
342 |
team_data['Assist_Proj'] = raw_assists * kill_scale
|
|
|
347 |
raw_kills = team_data.apply(lambda row: row['lKill%'] * opp_pos_kills_boost_loss.get(row['position'], 1), axis=1)
|
348 |
raw_deaths = team_data.apply(lambda row: row['lDeath%'] * opp_pos_deaths_boost_loss.get(row['position'], 1), axis=1)
|
349 |
raw_assists = team_data.apply(lambda row: row['lAssist%'] * opp_pos_assists_boost_loss.get(row['position'], 1), axis=1)
|
350 |
+
kill_scale = kill_predictions[game] / raw_kills.sum()
|
351 |
+
death_scale = death_predictions[game] / raw_deaths.sum()
|
|
|
352 |
team_data['Kill_Proj'] = raw_kills * kill_scale
|
353 |
team_data['Death_Proj'] = raw_deaths * death_scale
|
354 |
team_data['Assist_Proj'] = raw_assists * kill_scale
|
|
|
368 |
team_data['Kill_Proj'] = team_data.apply(lambda row: row['wKill%'] * opp_pos_kills_boost_win.get(row['position'], 1), axis=1)
|
369 |
team_data['Death_Proj'] = team_data.apply(lambda row: row['wDeath%'] * opp_pos_deaths_boost_win.get(row['position'], 1), axis=1)
|
370 |
team_data['Assist_Base'] = team_data.apply(lambda row: row['wAssist%'] * opp_pos_assists_boost_win.get(row['position'], 1), axis=1)
|
371 |
+
team_data['Assist_Proj'] = team_data['Assist_Base']
|
|
|
372 |
team_data['CS_Proj'] = team_data.apply(lambda row: row['wCS'] * opp_pos_cs_boost_win.get(row['position'], 1), axis=1)
|
373 |
team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'CS_Proj']]
|
374 |
else:
|
375 |
team_data['Kill_Proj'] = team_data.apply(lambda row: row['lKill%'] * opp_pos_kills_boost_loss.get(row['position'], 1), axis=1)
|
376 |
team_data['Death_Proj'] = team_data.apply(lambda row: row['lDeath%'] * opp_pos_deaths_boost_loss.get(row['position'], 1), axis=1)
|
377 |
team_data['Assist_Base'] = team_data.apply(lambda row: row['lAssist%'] * opp_pos_kills_boost_loss.get(row['position'], 1), axis=1)
|
378 |
+
team_data['Assist_Proj'] = team_data['Assist_Base']
|
|
|
379 |
team_data['CS_Proj'] = team_data.apply(lambda row: row['lCS'] * opp_pos_cs_boost_loss.get(row['position'], 1), axis=1)
|
380 |
team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'CS_Proj']]
|
381 |
|
|
|
547 |
|
548 |
for game in range(game_count):
|
549 |
if kill_predictions[game] > 0:
|
550 |
+
working_tables = player_tables[['playername', 'teamname', 'position', 'playername_avg_kills_win', 'playername_avg_deaths_win', 'playername_avg_assists_win', 'playername_avg_total_cs_win',
|
551 |
+
'playername_avg_kills_loss', 'playername_avg_deaths_loss', 'playername_avg_assists_loss', 'playername_avg_total_cs_loss']]
|
552 |
+
working_tables = working_tables.rename(columns = {'playername_avg_kills_win': 'wKill%', 'playername_avg_deaths_win': 'wDeath%', 'playername_avg_assists_win': 'wAssist%',
|
553 |
+
'playername_avg_total_cs_win': 'wCS', 'playername_avg_kills_loss': 'lKill%', 'playername_avg_deaths_loss': 'lDeath%',
|
554 |
+
'playername_avg_assists_loss': 'lAssist%', 'playername_avg_total_cs_loss': 'lCS'})
|
555 |
team_data = working_tables.drop_duplicates(subset = ['playername'])
|
556 |
+
team_data = working_tables.drop_duplicates(subset = ['position'])
|
557 |
|
558 |
if win_loss_settings[game] == "Win":
|
559 |
+
raw_kills = team_data.apply(lambda row: row['wKill%'] * opp_pos_kills_boost_win.get(row['position'], 1), axis=1)
|
560 |
+
raw_deaths = team_data.apply(lambda row: row['wDeath%'] * opp_pos_deaths_boost_win.get(row['position'], 1), axis=1)
|
561 |
+
raw_assists = team_data.apply(lambda row: row['wAssist%'] * opp_pos_assists_boost_win.get(row['position'], 1), axis=1)
|
562 |
+
kill_scale = kill_predictions[game] / raw_kills.sum()
|
563 |
+
death_scale = death_predictions[game] / raw_deaths.sum()
|
564 |
+
team_data['Kill_Proj'] = raw_kills * kill_scale
|
565 |
+
team_data['Death_Proj'] = raw_deaths * death_scale
|
566 |
+
team_data['Assist_Proj'] = raw_assists * kill_scale
|
567 |
|
568 |
team_data['CS_Proj'] = team_data.apply(lambda row: row['wCS'] * opp_pos_cs_boost_win.get(row['position'], 1), axis=1)
|
569 |
team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'CS_Proj']]
|
570 |
else:
|
571 |
+
raw_kills = team_data.apply(lambda row: row['lKill%'] * opp_pos_kills_boost_loss.get(row['position'], 1), axis=1)
|
572 |
+
raw_deaths = team_data.apply(lambda row: row['lDeath%'] * opp_pos_deaths_boost_loss.get(row['position'], 1), axis=1)
|
573 |
+
raw_assists = team_data.apply(lambda row: row['lAssist%'] * opp_pos_assists_boost_loss.get(row['position'], 1), axis=1)
|
574 |
+
kill_scale = kill_predictions[game] / raw_kills.sum()
|
575 |
+
death_scale = death_predictions[game] / raw_deaths.sum()
|
576 |
+
team_data['Kill_Proj'] = raw_kills * kill_scale
|
577 |
+
team_data['Death_Proj'] = raw_deaths * death_scale
|
578 |
+
team_data['Assist_Proj'] = raw_assists * kill_scale
|
579 |
|
580 |
team_data['CS_Proj'] = team_data.apply(lambda row: row['lCS'] * opp_pos_cs_boost_loss.get(row['position'], 1), axis=1)
|
581 |
team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'CS_Proj']]
|
|
|
591 |
team_data['Kill_Proj'] = team_data.apply(lambda row: row['wKill%'] * opp_pos_kills_boost_win.get(row['position'], 1), axis=1)
|
592 |
team_data['Death_Proj'] = team_data.apply(lambda row: row['wDeath%'] * opp_pos_deaths_boost_win.get(row['position'], 1), axis=1)
|
593 |
team_data['Assist_Base'] = team_data.apply(lambda row: row['wAssist%'] * opp_pos_assists_boost_win.get(row['position'], 1), axis=1)
|
594 |
+
team_data['Assist_Proj'] = team_data['Assist_Base']
|
|
|
595 |
team_data['CS_Proj'] = team_data.apply(lambda row: row['wCS'] * opp_pos_cs_boost_win.get(row['position'], 1), axis=1)
|
596 |
team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'CS_Proj']]
|
597 |
else:
|
598 |
team_data['Kill_Proj'] = team_data.apply(lambda row: row['lKill%'] * opp_pos_kills_boost_loss.get(row['position'], 1), axis=1)
|
599 |
team_data['Death_Proj'] = team_data.apply(lambda row: row['lDeath%'] * opp_pos_deaths_boost_loss.get(row['position'], 1), axis=1)
|
600 |
team_data['Assist_Base'] = team_data.apply(lambda row: row['lAssist%'] * opp_pos_kills_boost_loss.get(row['position'], 1), axis=1)
|
601 |
+
team_data['Assist_Proj'] = team_data['Assist_Base']
|
|
|
602 |
team_data['CS_Proj'] = team_data.apply(lambda row: row['lCS'] * opp_pos_cs_boost_loss.get(row['position'], 1), axis=1)
|
603 |
team_data = team_data[['playername', 'teamname', 'position', 'Kill_Proj', 'Death_Proj', 'Assist_Proj', 'CS_Proj']]
|
604 |
|