Fixed some player name aliases, added per role win rate output, and role groups

This commit is contained in:
John Drake 2025-11-15 13:17:51 -05:00
parent df79dbd110
commit 15de071fc7
2 changed files with 130 additions and 83 deletions

View file

@ -29,21 +29,21 @@
- freegunther, 160
- xzxz, 155
- aromatomato, 126
- lsecannon28, 119
- lsecannon, 119
- legelos, 116
- daddyroids, 71
- raynian, 58
inferno:
score: 133
players:
- theaftermath, 400
- aftermath, 400
- thaen, 363
- astralis, 333
- mp40, 284
- mlgru, 278
- bendover, 267
- therealjohnwayne, 259
- xxxjerry69, 243
- johnwayne, 259
- jerry, 243
- daheat, 237
- irvin, 233
- doug, 190
@ -68,11 +68,11 @@
players:
- danno, 369
- thaen, 349
- xxxjerry69, 347
- jerry, 347
- jazz, 319
- therealjohnwayne, 271
- johnwayne, 271
- sake, 221
- lsecannon28, 193
- lsecannon, 193
- mlgru, 174
- daheat, 166
- xzxz, 154
@ -121,7 +121,7 @@
- bendover, 100
- piata, 98
- strazz, 90
- xxxjerry69, 80
- jerry, 80
- daznova, 63
- zool, 60
- raynian, 58
@ -144,7 +144,7 @@
- foxox, 122
- actionswanson, 115
- irvin, 114
- therealjohnwayne, 110
- johnwayne, 110
- spookyfuture, 85
- m80, 83
- gunther, 77
@ -194,7 +194,7 @@
- dirkdiggler, 183
- actionswanson, 180
- spookyfuture, 154
- therealjohnwayne, 121
- johnwayne, 121
- systeme, 120
- pupecki, 118
- aromatomato, 110
@ -227,7 +227,7 @@
- strazz, 257
- gabeowners, 256
- caution, 190
- lsecannon28, 172
- lsecannon, 172
- earth, 113
inferno:
score: 635
@ -261,7 +261,7 @@
- haggis, 534
- papalazarou, 369
- exogen, 339
- therealjohnwayne, 314
- johnwayne, 314
- danno, 304
- friendo, 291
- flakpyro, 251
@ -315,10 +315,10 @@
- aromatomato, 235
- heat, 199
- flakpyro, 174
- therealjohnwayne, 167
- johnwayne, 167
- geekofwires, 118
- raynian, 105
- lsecannon28, 42
- lsecannon, 42
- foxox, 32
- lazer, 16
inferno:
@ -387,7 +387,7 @@
- heat, 158
- doug, 157
- irvin, 142
- lsecannon28, 125
- lsecannon, 125
- earth, 123
- warchilde, 114
- yuanz, 88
@ -446,7 +446,7 @@
- pupecki, 60
- doug, 57
- lazer, 43
- lsecannon28, 2
- lsecannon, 2
- date: 2025-10-12
@ -463,7 +463,7 @@
- haggis, 472
- mlgru, 438
- geekofwires, 358
- therealjohnwayne, 256
- johnwayne, 256
- xzxz, 231
- aromatomato, 230
- slush, 218
@ -483,13 +483,13 @@
- daheat, 315
- 7thbishop, 314
- bish, 304
- xxxjerry69, 297
- jerry, 297
- irvin, 278
- history, 275
- piata, 195
- dirkdiggler, 179
- elliebackwards, 170
- lsecannon28, 160
- lsecannon, 160
- earth, 132
- caution, 90
@ -506,7 +506,7 @@
- slush, 499
- jazz, 451
- nutty, 398
- therealjohnwayne, 382
- johnwayne, 382
- thaen, 334
- warchilde, 233
- doug, 217
@ -515,7 +515,7 @@
- foxox, 162
- geekofwires, 156
- piata, 145
- lsecannon28, 123
- lsecannon, 123
- aromatomato, 96
- carpenter, 74
- 7thbishop, 16
@ -530,7 +530,7 @@
- irvin, 422
- freegunther, 420
- strazz, 377
- xxxjerry69, 359
- jerry, 359
- bendover, 359
- halo2, 358
- bish, 313
@ -557,7 +557,7 @@
- flakpyro, 295
- irvin, 277
- warchilde, 259
- therealjohnwayne, 245
- johnwayne, 245
- doug, 239
- piata, 229
- xzxz, 220
@ -617,7 +617,7 @@
- earth, 43
- warchilde, 34
- lazer, 32
- lsecannon28, 21
- lsecannon, 21
- zerooptix, 14
inferno:
score: 8
@ -656,7 +656,7 @@
- mlgru, 432
- sake, 431
- halo2, 403
- darrellw, 401
- darrell, 401
- fnatic, 372
- slush, 345
- jazz, 313
@ -664,7 +664,7 @@
- mp40, 285
- piata, 281
- warchilde, 274
- therealjohnwayne, 234
- johnwayne, 234
- flakpyro, 221
- yuanz, 212
- andycap, 203
@ -692,8 +692,8 @@
- lolcaps, 196
- gabeowners, 185
- strazz, 184
- xxxjerry69, 178
- lsecannon28, 176
- jerry, 178
- lsecannon, 176
- systeme, 168
- elliebackwards, 147
- uwumudshark, 141
@ -717,7 +717,7 @@
- haggis, 270
- nutty, 264
- mp40, 256
- xxxjerry69, 253
- jerry, 253
- strazz, 221
- lolcaps, 217
- doug, 214
@ -726,7 +726,7 @@
- irvin, 170
- gabeowners, 152
- foxox, 145
- lsecannon28, 137
- lsecannon, 137
- sirdumbass, 130
- tetchy, 120
- aromatomato, 113
@ -776,7 +776,7 @@
- doug, 183
- geekofwires, 175
- actionswanson, 141
- therealjohnwayne, 128
- johnwayne, 128
- spookyfuture, 126
- aromatomato, 98
- dirkdiggler, 96
@ -828,8 +828,8 @@
- foxox, 233
- aromatomato, 226
- irvin, 225
- lsecannon28, 211
- therealjohnwayne, 199
- lsecannon, 211
- johnwayne, 199
- 7thbishop, 175
- lazer, 102
- caution, 86
@ -869,7 +869,7 @@
- slush, 333
- fnatic, 332
- flakpyro, 290
- xxxjerry69, 284
- jerry, 284
- daddyroids, 280
- doug, 277
- 7thbishop, 249
@ -886,7 +886,7 @@
- heat, 109
- loop, 85
- gabeowners, 83
- lsecannon28, 81
- lsecannon, 81
- halo2, -10
inferno:
score: 223
@ -940,8 +940,8 @@
- mistcane, 53
- carpenter, 47
- daddyroids, 46
- xxxjerry69, 42
- lsecannon28, 41
- jerry, 42
- lsecannon, 41
- lazer, 36
- heat, 17
inferno:
@ -985,10 +985,10 @@
- uwumudshark, 292
- jazz, 282
- slush, 281
- therealjohnwayne, 215
- johnwayne, 215
- sweetcheeks, 179
- daheat, 177
- lsecannon28, 153
- lsecannon, 153
- 7thbishop, 138
- earth, 122
- freegunther, 50
@ -1038,7 +1038,7 @@
- yuanz, 143
- carpenter, 125
- 7thbishop, 93
- lsecannon28, 73
- lsecannon, 73
- lolcaps, 40
- dirkdiggler, 17
- andycap, 12
@ -1080,7 +1080,7 @@
- bendover, 440
- fnatic, 401
- elliebackwards, 373
- xxxjerry69, 356
- jerry, 356
- mlgru, 355
- vaxity, 320
- thaen, 318
@ -1097,7 +1097,7 @@
- pupecki, 137
- warchilde, 122
- carpenter, 63
- lsecannon28, 57
- lsecannon, 57
- 2short, 55
inferno:
score: 414
@ -1164,7 +1164,7 @@
players:
- geekofwires, 636
- halo2, 578
- theaftermath, 567
- aftermath, 567
- sliderzero, 481
- bendover, 386
- bish, 365
@ -1186,7 +1186,7 @@
- 2short, 82
- sevenup, 57
- elliebackwards, 39
- lsecannon28, 32
- lsecannon, 32
@ -1219,7 +1219,7 @@
- phillieskaren, 117
- 2short, 11
- lazer, 95
- lsecannon28, 42
- lsecannon, 42
inferno:
score: 720
players:
@ -1263,7 +1263,7 @@
storm:
score: 108
players:
- theaftermath, 485
- aftermath, 485
- raygetard, 417
- sake, 375
- sliderzero, 371
@ -1276,7 +1276,7 @@
- dirkdiggler, 193
- raynian, 17
- history, 174
- lsecannon28, 168
- lsecannon, 168
- nightwear, 162
- elliebackwards, 151
- foxox, 143
@ -1326,7 +1326,7 @@
- danno, 452
- warchilde, 423
- gunther, 416
- theaftermath, 389
- aftermath, 389
- irvin, 364
- naturaltalent, 307
- aromatomato, 295
@ -1338,7 +1338,7 @@
- systeme, 200
- foxox, 192
- heat, 183
- lsecannon28, 165
- lsecannon, 165
- caution, 157
- earth, 149
- sirdumbass, 120
@ -1416,7 +1416,7 @@
- doug, 68
- pupecki, 50
- history, 33
- lsecannon28, 12
- lsecannon, 12
- oldfart, 11
- happymealtoy, 10
@ -1432,7 +1432,7 @@
- raynian, 575
- bamboozled, 556
- brutalamerican, 444
- homerclees, 369
- homer, 369
- apathy, 357
- irvin, 319
- taco, 286
@ -1445,7 +1445,7 @@
score: 117
players:
- piata, 486
- theaftermath, 483
- aftermath, 483
- domestic, 302
- exogen, 296
- darksniper78, 268
@ -1479,9 +1479,9 @@
score: 621
players:
- jx, 509
- darrellw, 454
- darrell, 454
- irvin, 399
- theaftermath, 389
- aftermath, 389
- 7thbishop, 283
- exogen, 256
- kamalaharris, 255
@ -1737,12 +1737,12 @@
players:
- hexy, 609
- sliderzero, 474
- theaftermath, 367
- aftermath, 367
- sajent, 312
- devil, 281
- ipkiss, 257
- redeye, 249
- homerclees, 246
- homer, 246
- irvin, 240
- veryscary, 235
- miss, 210
@ -1780,7 +1780,7 @@
- warchilde, 144
- sweetcheeks, 118
- oldfart, 104
- lsecannon28, 98
- lsecannon, 98
- tomz, 25
@ -1791,14 +1791,14 @@
score: 419
players:
- haggis, 647
- theaftermath, 445
- aftermath, 445
- veryscary, 410
- hexy, 307
- redeye, 265
- sake, 265
- forgotpassword, 263
- sajent, 256
- homerclees, 220
- homer, 220
- miss, 175
- legelos, 170
- slush, 169
@ -1831,7 +1831,7 @@
- piata, 173
- cooter, 151
- carpenter, 146
- lsecannon28, 142
- lsecannon, 142
- taco, 70
- dirkdiggler, 60
- sevenup, 58
@ -1845,7 +1845,7 @@
storm:
score: 120
players:
- theaftermath, 356
- aftermath, 356
- jx, 344
- m80, 301
- devil, 292
@ -1860,7 +1860,7 @@
- mp40, 181
- lolcaps, 181
- dirkdiggler, 156
- homerclees, 145
- homer, 145
- carpenter, 128
- legelos, 111
- raynian, 84
@ -1882,7 +1882,7 @@
- redeye, 249
- sajent, 226
- veryscary, 203
- lsecannon28, 175
- lsecannon, 175
- irvin, 175
- piata, 145
- yuanz, 143
@ -1915,7 +1915,7 @@
- piata, 262
- redeye, 254
- carpenter, 238
- lsecannon28, 171
- lsecannon, 171
- sweetcheeks, 99
- yuanz, 83
- earth, 76
@ -1925,10 +1925,10 @@
score: 737
players:
- haggis, 747
- homerclees, 702
- homer, 702
- jx, 594
- sliderzero, 550
- theaftermath, 509
- aftermath, 509
- slush, 502
- forgotpassword, 500
- m80, 486
@ -1956,7 +1956,7 @@
- gunther, 587
- bizzy, 537
- cooter, 518
- darrellw, 460
- darrell, 460
- sake, 433
- notjocabdfs, 423
- irvin, 372
@ -1980,7 +1980,7 @@
players:
- nutty, 501
- history, 481
- theaftermath, 464
- aftermath, 464
- pedro, 426
- devil, 410
- 7thbishop, 390
@ -1992,7 +1992,7 @@
- carpenter, 260
- warchilde, 237
- piata, 225
- homerclees, 215
- homer, 215
- miss, 210
- sliderzero, 164
- elliebackwards, 151
@ -2031,15 +2031,15 @@
- calinou, 114
- oldfart, 95
- gunther, 94
- lsecannon28, 77
- lsecannon, 77
- tomz, 69
- sevenup, 10
inferno:
score: 228
players:
- theaftermath, 501
- aftermath, 501
- sliderzero, 474
- homerclees, 327
- homer, 327
- hpi, 312
- notjocabdfs, 306
- taco, 303
@ -2074,7 +2074,7 @@
- thaen, 298
- nutty, 25
- lolcaps, 223
- homerclees, 221
- homer, 221
- sajent, 176
- systeme, 175
- vaxity, 172
@ -2089,7 +2089,7 @@
inferno:
score: 821
players:
- theaftermath, 583
- aftermath, 583
- notjocabdfs, 406
- hpi, 381
- miss, 366
@ -2138,12 +2138,12 @@
inferno:
score: 725
players:
- theaftermath, 409
- aftermath, 409
- sliderzero, 391
- miss, 360
- thaen, 333
- notjocabdfs, 288
- homerclees, 263
- homer, 263
- forgotpassword, 245
- sajent, 235
- irvin, 222
@ -2156,7 +2156,7 @@
- systeme, 113
- elliebackwards, 110
- gunther, 82
- lsecannon28, 76
- lsecannon, 76
- date: 2025-11-01
@ -2177,7 +2177,7 @@
- 7thbishop, 140
- strazz, 137
- geekofwires, 113
- lsecannon28, 64
- lsecannon, 64
- andycap, 56
- lazer, 50
inferno:
@ -2247,7 +2247,7 @@
- strazz, 190
- elliebackwards, 161
- daznova, 147
- lsecannon28, 107
- lsecannon, 107
- aromatomato, 83
- lazer, 67
- dirkdiggler, 20
@ -2276,13 +2276,13 @@
- foxox, 402
- pupecki, 316
- aromatomato, 314
- lghtspd, 304
- fnatic, 304
- elliebackwards, 300
- geekofwires, 297
- heat, 243
- lazer, 189
- dirkdiggler, 167
- lsecannon28, 122
- lsecannon, 122
inferno:
score: 850
players:

View file

@ -124,6 +124,9 @@ players_to_roles = {
'lolcaps':['cap'],
'aftermath':['ld'],
'fnatic':['ld'],
'cooljuke':['snipe'],
'sterio':['ld'],
'jazz':['ho','ld','cap'],
}
first_roles_to_players = dict()
@ -144,6 +147,19 @@ for player,roles in players_to_roles.items():
any_roles_to_players[role].append(player)
# D doesn't include farm and O doesn't include cap
role_relationships = {'defense':['tank','hd','lof','hof','ld','flex','shrike','snipe'],'offense':['shrike','ho','snipe','flex','lo','snipe']}
any_roles_to_players['defense'] = list()
print("any_roles_to_players['defense']:",any_roles_to_players['defense'])
print("any_roles_to_players['offense']:",any_roles_to_players['offense'])
for (role, related_roles) in role_relationships.items():
if role not in any_roles_to_players:
any_roles_to_players[role] = list()
for related_role in related_roles:
any_roles_to_players[role].append(any_roles_to_players[related_role])
print("expanded any_roles_to_players['defense']:",any_roles_to_players['defense'])
print("any_roles_to_players['offense']:",any_roles_to_players['offense'])
player_to_win_count = dict()
player_to_match_count = dict()
duo_to_win_count = dict()
@ -339,6 +355,11 @@ for match in file_contents:
# players.sort(key=lambda p: stpwglickos[p].rating if p in stpwglickos else 1400, reverse=True)
# print('sorted:',role,players)
# Warn missing first roles
# for player in player_to_match_count.keys():
# if player not in players_to_roles:
# print("Warning: player '{}' has no first role defined".format(player))
# Print conditional probabilities
player_to_win_rate = dict()
for matchkvp in player_to_match_count.items():
@ -358,6 +379,32 @@ player_to_win_rate_sorted = list(player_to_win_rate.items())
player_to_win_rate_sorted.sort(key=lambda p: p[1], reverse=True)
print('Lower confidence Best (and worst) player win rates:\n','\n'.join([str(x) for x in player_to_win_rate_sorted]))
print('')
# As above but per role
for role, players in first_roles_to_players.items():
# print([str((p,player_to_match_count[p])) for p in players if p in player_to_match_count])
player_match_counts = [player_to_match_count[p] for p in players if p in player_to_match_count]
player_match_counts.sort()
top_third_match_count = player_match_counts[len(player_match_counts)*2//3]
middle_third_match_count = player_match_counts[len(player_match_counts)//3]
# print('Role:',role,'player match counts:',player_match_counts,'top third cutoff:',top_third_match_count,'middle third cutoff:',middle_third_match_count)
significant_players = [(p, player_to_win_count[p] / player_to_match_count[p]) for p in players if p in player_to_match_count and player_to_match_count[p] >= top_third_match_count]
significant_players.sort(key=lambda p: p[1], reverse=True)
print('Higher confidence',role,[p[0]+' '+format(p[1],'.2f') for p in significant_players])
significant_players = [(p, player_to_win_count[p] / player_to_match_count[p]) for p in players if p in player_to_match_count and player_to_match_count[p] >= middle_third_match_count and player_to_match_count[p] < top_third_match_count]
significant_players.sort(key=lambda p: p[1], reverse=True)
print('Middle confidence',role,[p[0]+' '+format(p[1],'.2f') for p in significant_players])
significant_players = [(p, player_to_win_count[p] / player_to_match_count[p]) for p in players if p in player_to_match_count and player_to_match_count[p] < middle_third_match_count and player_to_match_count[p] > 1]
significant_players.sort(key=lambda p: p[1], reverse=True)
print('Lower confidence',role,[p[0]+' '+format(p[1],'.2f') for p in significant_players])
print()
print()
duo_to_win_rate = dict()
@ -367,7 +414,7 @@ for matchkvp in duo_to_match_count.items():
duo_to_win_rate[matchkvp[0]] = duo_to_win_count[matchkvp[0]] / matchkvp[1]
duo_to_win_rate_sorted = list(duo_to_win_rate.items())
duo_to_win_rate_sorted.sort(key=lambda p: p[1], reverse=True)
print('Best (and worst) duo win rates:\n','\n'.join([str(x) for x in duo_to_win_rate_sorted]))
print('Duo win rates (n >= 18):\n','\n'.join([str(x) for x in duo_to_win_rate_sorted]))
print()
@ -378,6 +425,6 @@ for matchkvp in trio_to_match_count.items():
trio_to_win_rate[matchkvp[0]] = trio_to_win_count[matchkvp[0]] / matchkvp[1]
trio_to_win_rate_sorted = list(trio_to_win_rate.items())
trio_to_win_rate_sorted.sort(key=lambda p: p[1], reverse=True)
print('Best (and worst) trio win rates:\n','\n'.join([str(x) for x in trio_to_win_rate_sorted]))
print('Trio win rates (n >= 10):\n','\n'.join([str(x) for x in trio_to_win_rate_sorted]))
print()