Среди четырех основных спортивных лиг США Национальная футбольная лига стала самой популярной. Как многомиллиардная компания, она постоянно ищет новые рубежи, чтобы очаровать свою постоянно растущую базу поклонников. Следуя этой логике, на горизонте маячат обсуждения возможного расширения команды. Обещание новой профессиональной футбольной команды, безусловно, является захватывающей перспективой, но оно приводит к важному вопросу, который контролирует весь процесс: где эта команда найдет свой дом? В этой статье я попытаюсь ответить на этот вопрос, используя машинное обучение.

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

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

Данные обучения, использованные для этого проекта, содержали информацию о различных демографических показателях округов, в которых расположены все 30 команд НФЛ. Эти данные были получены от Бюро переписи населения США за 2021 год. Как упоминалось ранее, я использовал данные о посещаемости в качестве переменной для прогнозирования, и это было взято с сайта pro-football-reference.com. Пример этих данных показан ниже.

Что касается данных тестирования, я составил список городов-кандидатов и демографические данные их округов на основе статьи Bleacher Report ниже и других подобных источников из спортивных СМИ. Эти данные тестирования показаны ниже.

Для загрузки данных использовались следующие строки кода:

features = pd.read_csv('nfl_attendance.csv')
testing_data = pd.read_csv('test_data.csv')

Прежде чем модель можно было обучить, необходимо было произвести несколько манипуляций с данными. Поскольку значения столбца «Tm» не будут иметь значения при определении посещаемости для местоположения, эти значения были удалены. Кроме того, мне пришлось преобразовать все значения данных в тип «float 64» и установить любые нулевые значения в среднее значение этого столбца. Я также исключил все типы объектов из окончательного фрейма данных, которые будут использоваться для обучения модели, поскольку иначе она не будет работать.

features = features.drop(['Tm'], axis=1)
testing_data = testing_data.drop(['Tm'], axis=1)

features.dtypes
for x in features:
    if features[x].dtypes == "int64":
        features[x] = features[x].astype(float)

df = features.select_dtypes(exclude=['object'])
df=df.fillna(df.mean())
X = df.drop('Attendance',axis=1)
y = df['Attendance']

Наконец, и это самое главное, мне нужно было учесть тот факт, что не все переменные или признаки были одного масштаба. Например, большинство значений Count_Population составляют сотни тысяч или миллионы, в то время как средний возраст обычно составляет от 36 до 40 лет. Чтобы учесть это и убедиться, что модель не придает большего значения определенным переменным из-за размера, я уменьшил все значения до диапазона, используя приведенную ниже формулу.

X = (X-X.min())/(X.max()-X.min())

Теперь все, что осталось сделать перед обучением модели, — это разделить данные X и Y на данные обучения и тестирования.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

Значение n_estimators представляет количество деревьев решений в случайном лесу, а random_state, равное 42, делает результаты воспроизводимыми.

#Running the model
from sklearn.ensemble import RandomForestRegressor
regressor = RandomForestRegressor(n_estimators = 1000, random_state = 42)
regressor.fit(X_train, y_train)

#Testing the model out
preds = regressor.predict(testing_data)
df2=pd.DataFrame({'City':expansions['Tm'],'Predicted':preds})
df2

Результаты модели показаны ниже:

Как видно, район города, который, по прогнозам, привлечет наибольшее количество болельщиков домашних игр, — это Остин, штат Техас, за ним следуют Омаха, Северная Каролина, и Сан-Диего, Калифорния. Прогнозируемое значение 655062 посетителей для Остина входит в десятку лучших по домашней посещаемости для команд в прошлом сезоне НФЛ 2022 года.

При дальнейшем изучении Остин кажется хорошим выбором для будущей команды НФЛ. За последние несколько лет в районе метро Остина наблюдался поразительный рост, и, по прогнозам, в ближайшее десятилетие население увеличится еще больше.

Штат Техас также стал одним из самых популярных направлений для внутреннего переезда в США, уступив в 2021 году только Флориде.

В конечном счете, используя мощь данных и применяя сложные методы моделирования, такие как случайный лес, мы можем улучшить процесс принятия решений и повысить вероятность выбора лучшего города для команды расширения НФЛ — в этом исследовании это был Остин. Тем не менее, по-прежнему важно отметить, что процесс выбора города команды расширения НФЛ не должен полагаться исключительно на анализ данных, поскольку есть и другие факторы, такие как будущий успех команды, которые могут сильно повлиять на популярность франшизы.