O Fantasy-Ga é um módulo Python e uma ferramenta de linha de comando que usa o algoritmo genético para automatizar a geração de programas de esportes de fantasia. Atualmente, plataformas e ligas suportadas são as seguintes.
NBA | NFL | Mlb | NHL | |
---|---|---|---|---|
DraftKings | ✅ | ✅ | ✅ | ✅ |
Dependências: numpy
pip install fantasy-ga
A classe LineupGenerator
suporta arquivos CSV exportados de plataformas esportivas diárias de fantasia para um determinado concurso.
De Fantasy_ga Import lineUpGeneratorFrom Fantasy_ga.configs Importar site, liga, modelConfig, ContestconfigData_path = "Exemplos/DraftKings/NBA/dksalaries.csv" export_path = "Exemplos/DraftKings/NBA/Export.CSV" CC = Contestconfig (Site.dk, Site. NBA) MC = ModelConfig (# População inicial de linha aleatória de linha aleatória = 1000# Número de evoluções para reprodução e mutação iterreada forn_gen = 16# número de formação de crianças para escolher entre dois melhores lineupsn_breed = 30# número de mutações aleatórias para cada evoluçãon_mutate = 30# Número de evoluções compostas com linha aleatória adicional aleatórian_compound = 5) model = lineUpGenerator (CC, MC) Model.read_csv (data_path) model.fit ()# Se top_n não for especificado, ele salvará o máximo (500, número de linha total) da linha) classificado por scoresmodel.export_csv (export_path, top_n = 3) linha, scores = model.get_top_n_lineups (1) print (f "" "[melhor linha] players: {[model.id_to_name [id] para id em linha [0]] } Salário Total: {SUM ([Model.id_to_salary [ID] para ID em linha [0]])} FPTS esperado: {Scores [0]} "" ")
numpy.array
personalizado para dados do jogador Como alternativa, você pode fornecer um numpy.array
, onde as três primeiras colunas correspondem ao ID do jogador, salário, pontos de fantasia (FPTs), seguidos pelas informações de posição. Por exemplo, as colunas correspondem a id,salary,fpts,PG,SG,SF,PF,C,G,F,UTIL
for DraftKings Fantasy Basketball.
Se você deseja usar a matriz Numpy personalizada para matriz de dados em vez de arquivos CSV, você pode fazê -lo usando o método set_matrix()
. Por exemplo
cc = contentconfig (site.dk, liga.nba) mc = modelconfig () # use defaultM = np.array ( [[ [0, 6600, 36.46503, 0, 0, 0, 1, 1, 0, 1, 1], [1, 4200, 26.760368, 0, 0, 1, 1, 0, 0, 1, 1], [2, 3000, 4.38538, 1, 1, 0, 0, 0, 1, 0, 1], [3, 5000, 27.175564, 0, 0, 0, 0, 1, 0, 0, 1], [4, 3400, 16.734577, 0, 1, 1, 0, 0, 1, 1, 1], [5, 5900, 3.4382372, 0, 1, 1, 0, 0, 1, 1, 1], [6, 3000, -0.18490964, 1, 1, 0, 0, 0, 1, 0, 1], [7, 3000, 11.075589, 0, 0, 1, 1, 0, 0, 1, 1], [8, 3000, 6.469783, 0, 0, 0, 0, 1, 0, 0, 1], [9, 3000, 8.459954, 0, 0, 0, 0, 1, 0, 0, 1], [10, 5700, 33.98281, 0, 0, 0, 1, 1, 0, 1, 1], ] ) Model = LineUpGenerator (CC, MC) Model.Set_Matrix (M) Model.Fit ()
A classe LineupGenerator
possui dois métodos principais que retornam linhas otimizadas. O método breed()
escolhe as duas melhores escalações de acordo com a soma dos pontos de fantasia com posições válidas e trocam jogadores aleatoriamente (criando formação de crianças ). O método mutate()
troca aleatoriamente os jogadores, quando aplicável. O método fit()
envolve esses métodos de modo que essas operações sejam feitas para várias gerações com linha aleatória adicional.
Como um módulo Python
$ python -m fantasy_ga --data_path=examples/DraftKings/NBA/DKSalaries.csv --export_path=examples/DraftKings/NBA/lineups.csv --site=DraftKings --league=NBA --n_pop=100 --n_gen=5 --n_breed=100 --n_mutate=100 --n_compound=10 --top_n_lineups=3
ou um comando da CLI
$ fantasy-ga --data_path=examples/DraftKings/NBA/DKSalaries.csv --export_path=examples/DraftKings/NBA/lineups.csv --site=DraftKings --league=NBA --n_pop=100 --n_gen=5 --n_breed=100 --n_mutate=100 --n_compound=10 --top_n_lineups=3
que gera
Saved top 3 lineups into "examples/DraftKings/NBA/lineups.csv". [Best Lineup] Players: ['Reggie Jackson', 'Max Strus', 'Anthony Edwards', "Royce O'Neale", 'Nikola Jokic', 'Dejounte Murray', 'John Collins', 'Jarrett Allen'] Salary Total: 50000 Expected FPTS: 268.13