– анализ футбола, как игры…

Чтобы с помощью цифр получить информацию о событиях, происходящих на футбольном поле, предлагаю оценить, как тот или иной показатель влияет на исход матча, а затем выяснить, по каким показателям команда уступает, а по каким показателям. Исправить это. он.

В виде тепловой карты представлено влияние основных характеристик на голы, забитые командой. Забитые голы представляют результаты любой футбольной команды, хотя вы можете поэкспериментировать с другими целевыми переменными. Представлены только основные. Конечно, есть и другие, и их очень много.

Мы можем создать тепловую карту с помощью Python, код показан ниже. Для этого нам нужны данные — база данных (df) и понимание целевой переменной, которую мы собираемся изучать (в данном случае — голы, забитые Gls). Как результат – представленная выше тепловая карта или, другими словами, степень влияния всех основных характеристик на целевую переменную.

# библиотеки, которые понадобятся
import pandas as pd
import matplotlib as mpl
from matplotlib import pyplot as plt
import seaborn as sb
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split

# читаем файл с данными
df = pd.read_csv('*.csv')
# строим из данных тепловую карту
f, ax = plt.subplots(figsize=(18, 18), dpi=200)
plt.figure(figsize=(10, 68))
df.corr()[['Gls']].sort_values(by='Gls', ascending=False)
heatmap = sb.heatmap(df.corr()[['Gls']].sort_values(by='Gls', ascending=False), vmin=-1, vmax=1, annot=True,
                     cmap='rocket', linecolor="white", linewidths=0.7)
ax.invert_yaxis()
# сохраняем файл в текущей папке
heatmap.figure.savefig('correlation_Gls.png', dpi=200)

Давайте посмотрим на некоторые описательные статистические данные. Для этого берем данные за несколько сезонов лиги. То, что представлено ниже, сделано на основе тех признаков, которые кажутся нам, ну и конечно же компьютеру, наиболее важными. Например, статистика по ударам в створ (SoT).

e8238cf17a9af1fc5ff23c9f06532d02

Команда, чтобы забить от 1,7 до 2,43 голов за игру, должна поразить створ в среднем 5,84 раза. И если, например, средний показатель за игру составляет 5,2 удара в створ, но команда забивает 2,0 гола, значит, имеется недочет по ударам в створ и команда добилась хорошего результата по забитым голам благодаря некоторые другие показатели. Поэтому, если подтянуть точность, результат команды будет лучше. Уловил смысл?

ЧИТАТЬ   Продюсер «Т-34» снимает фэнтези по сказке Бажова «Хозяйка Медной горы».

Привожу небольшой, но полезный код для получения описательной статистики)

# разбиваем на равные интервалы
df_2['Gls'] = pd.qcut(df_2['Gls'], q=10)
# описательная статистика
df_m = df_2.groupby('Gls')['SoT'].describe()

Теперь давайте добавим еще несколько визуализаций и посмотрим, как выглядят данные, с которыми мы работаем.

c9c3f39bc7cef51b87ddb4b7d182f087

Цветные квадраты представляют диапазон самой большой группы наблюдений. Вертикальная линия в середине каждого наблюдения является наиболее точным медианным значением. Ну и усики, указывающие на возникающие отклонения.

output, var2 = 'SoT', 'Gls'
fig, ax = plt.subplots(figsize=(14, 9))
sb.boxplot(x=var2, y=output, data=df_2)
plt.grid(linestyle="--")
ax.set(xlabel="голы забитые (в среднем за матч)", ylabel="SoT")
ax.figure.savefig('SoT.png', dpi=300)

Таким образом, мы провели исследование по единственной целевой переменной – забитым голам. Главной особенностью считались удары в створ. Однако команда может много забивать и лидировать по забитым мячам, но при этом много пропускать и приближаться к середине таблицы. В наборе необходимо исследовать сразу несколько признаков! Тогда у нас будет более четкое представление о том, как команда может улучшить свои результаты, улучшая какие качества игры.

Допустим, мы провели аналогичное исследование таких показателей, как среднее количество передач, за которыми следует гол (Ast), владение мячом (Poss), удары в створ (SoTA) и сейвы вратарей для нашей команды (Save).

Все показатели в конце должны иметь среднее значение по игре. Затем мы берем текущие показатели анализируемой команды в течение сезона и сравниваем их со средними показателями по лиге за несколько лет. Такую лепестковую диаграмму легко создать в Excel.

a819ab1ce163c0cc4fdedd1cf2a89e6f

Соответствие признаков забитым голам можно определить с помощью того же питона и той же регрессии.

Xg = np.array(df['SoT']) # значения признака
yg = np.array(df['Gls']) # значение целевой переменной
X_g = Xg.reshape(-1, 1)
# данные для определения соответствия (удары в створ)
# для каждого из чисел мы получим предсказание соответствия признака целевой переменной
X_Gpred = np.array([2.4, 2.5, 2.75, 3, 3.27, 3.5, 4, 4.25, 4.5, 4.75, 5, 5.25, 5.6, 5.9, 6.2, 6.4])
# полиномиальная регрессия
from sklearn.preprocessing import PolynomialFeatures
X_train, X_test, y_train, y_test = train_test_split(X_g, yg, test_size=0.5, random_state=20)
pr = LinearRegression()
quadratic = PolynomialFeatures(degree=1)
pr.fit(quadratic.fit_transform(X_train), y_train) # обучаем модель
y_pr = pr.predict(quadratic.fit_transform(X_Gpred.reshape(-1, 1))) # определяем соответствие признака целевой переменной
# получаем результат для каждого значения X_Gpred
print(f'полиномиальная регрессия \n {y_pr}')
# оценка качества
from sklearn.metrics import mean_squared_error
y = np.array([2.4, 2.5, 2.75, 3, 3.27, 3.5, 4, 4.25, 4.5, 4.75, 5, 5.25, 5.6, 5.9, 6.2, 6.4])
print('Среднеквадратическое отклонение для полиномиальной модели:', mean_squared_error(y, y_pr))

ОБЩИЙ:

ЧИТАТЬ   В Кургане десятки водителей лишились прав из-за алкоголя

Мы посмотрели на явные признаки… Да, если команда мало забивает или много пропускает, это видно даже без дальнейшего анализа, но искусство футбольного анализа еще и в том, чтобы выявлять признаки для каждой команды в отдельности! В результате на основе анализа мы получим информацию о том, какие показатели команде необходимо улучшить…

Присоединяйтесь к plus3s.site!

Побед вам и преодоления трудностей! )

Source

От admin