Использование анализа данных и машинного обучения для прогнозирования финального результата футбольного матча.

Формулировка проекта

Этот проект разработан для выявления факторов, влияющих на конечный результат футбольного матча, с использованием методов анализа данных. Затем результаты аналитических методов используются для разработки прогностической модели на основе исторических данных. Объем проекта охватывает в общей сложности 10 сезонов в 5 футбольных лигах, в частности, в 5 лучших европейских лигах: Английская Премьер-лига, Немецкая Бундеслига, Итальянский Кальчо А, Испанский Примера Дивизион/Ла Лига и Французская Лига 1. Требования для этого исследования:

  1. Блокнот Юпитер. Python используется для получения данных, выполнения аналитики и обучения модели прогнозирования.
  2. Исторические данные. Это исследование получает набор данных с сайта football-data.co.uk.

Чтобы лучше понять, о чем вы читаете, вот архитектура системы:

Получение данных

Данные получены с веб-сайта, указанного в предыдущей главе. Вместо удаления набор данных просто считывается с помощью модуля pandas и сохраняется во фрейме данных.

# ACQUIRE DATASETS FROM football-data.co.uk
# England
eng11 = pd.read_csv(“https://www.football-data.co.uk/mmz4281/1011/E0.csv")
eng12 = pd.read_csv(“https://www.football-data.co.uk/mmz4281/1112/E0.csv")

Код повторяется несколько раз, чтобы сохранить разные сезоны лиги в разных фреймах данных. Однако, если читатель намерен хранить наборы данных непосредственно в одном кадре данных, обязательно продолжайте. используйте «df.head()» для просмотра первых нескольких строк драйва данных или «df.tail()» для просмотра последних нескольких строк.

Подготовка данных

Следующим разумным шагом после сбора данных является проверка набора данных на наличие отсутствующих или противоречивых значений или преобразование набора данных в то, что нужно уважаемым читателям. Процесс, выполняемый первым, — это анализ даты в объекте datetime. Помните, что в Python отступы важны. Поэтому требуется одна табуляция в строках, возвращающих значение функции.

# Parse date from string to datetime object
def parse_date(date):
# Converts date from string to datetime object.
return datetime.strptime(date, '%d/%m/%y').date()
def parse_date_other(date):
# Converts date when strptime layout is different
return datetime.strptime(date, '%d/%m/%Y').date()

Далее выводятся новые атрибуты на основе. Конечно, после замены отсутствующих значений путем удаления столбцов все, что осталось, — это просто передать набор данных в прогностическую модель и покончить с этим. Однако, поскольку это исторические данные и тот факт, что результат дома/в гостях/ничья находится в той же строке, что и полный результат «FTR» (примечание, это метка класса проекта), прогностическая модель вернет точность 1,0. Это связано с тем, что результат основного времени ОПРЕДЕЛЯЕТ, какая команда выиграла матч лиги. Если объяснение неясно, мы вернемся к нему во время разработки прогностической модели.