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 |
|