Fantasy-GA -это модуль Python и инструмент командной строки, который использует генетический алгоритм для автоматизации генерации составов фэнтези-спорта. В настоящее время поддерживаемые платформы и лиги следующие.
НБА | НФЛ | MLB | НХЛ | |
---|---|---|---|---|
DRACKKings | ✅ | ✅ | ✅ | ✅ |
Зависимости: numpy
PIP установить Fantasy-GA
Класс LineupGenerator
поддерживает файлы CSV, экспортируемые с платформ Daily Fantasy Sports для данного конкурса.
Из Fantasy_ga Import LineupGeneratorFrom Fantasy_GA.Configs сайт импорта, лига, модельконфиг, конкурсконфигдата_Пат = "Примеры/DraftKings/NBA/DKSALARY.CSV" EXPORT_PATH = "Примеры/DRACKKings/NBA/EXPORT.CSV" CC = конкурсконфиг (сайт. Nba) mc = modelconfig (# начальная популяция случайной линейки leinupsn_pop = 1000# Количество эволюций для итерации размножения и мутации forn_gen = 16# Количество линейки детей на выбор из двух лучших линейров Количество эволюций соединений с дополнительной случайной lineupsn_compound = 5) model = lineupgenerator (cc, mc) model.read_csv (data_path) model.fit ()# Если не указан Top_n, он сохранит максимум (500, количество общих линейков). Сортируется с помощью scoresmodel.export_csv (export_path, top_n = 3) ряд, оценки = model.get_top_n_lineups (1) print (f "" "[best storim] игроки: {model.id_to_name [id] для ID в линейках [0]] } Общая заработная плата: {sum ([model.id_to_salary [id] для ID в линейках [0]])} ожидаемых fpts: {оценки [0]} "" ")
numpy.array
для данных игрока В качестве альтернативы, вы можете предоставить numpy.array
, где первые 3 столбца соответствуют идентификатору игрока, зарплате, фэнтезийным точкам (FPTS), за которым следует информация о положении. Например, столбцы соответствуют id,salary,fpts,PG,SG,SF,PF,C,G,F,UTIL
для фэнтезийного баскетбола DraftKings.
Если вы хотите использовать пользовательский массив Numpy для матрицы данных вместо файлов CSV, вы можете сделать это, используя метод set_matrix()
. Например
CC = CompetingConfig (site.dk, league.nba) mc = modelconfig () # используйте 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 ()
Класс LineupGenerator
имеет два основных метода, которые возвращают оптимизированные линейки. Метод breed()
выбирает два лучших состава в соответствии с суммой фэнтезийных точек с действительными позициями и случайным образом обменять игроки (создание детских составов). Метод mutate()
случайным образом обменяется игроками, где это применимо. Метод fit()
оборачивается вокруг этих методов, так что эти операции выполняются для нескольких поколений с дополнительными случайными составами.
Как модуль 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
или команда 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
который генерирует
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