Рубрики
Без рубрики

Прогнозирование рыночной стоимости игроков FIFA19

Тематическое исследование с линейным деревом решений, случайным лесом, регрессором SVR и градиента … Помечено машинным обучением, искусственным интеллектом, наукой данных, Python.

Тематическое исследование с линейным деревом решений, Random Forest, SVR и градиентным регрессором повышения

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

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

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

Используемый набор данных можно загрузить из https://www.kaggle.com/karangadiya/fifa19

Предпосылка

Убедитесь, что у вас установлено следующее на вашей машине

  1. Питон
  2. Numpy
  3. Панды
  4. Scikit-learn

Импортировать зависимости

# Data manipulation
import pandas as pd
import numpy as np

# Machine Learning Algorithms
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import RandomForestRegressor
from sklearn.svm import SVR
from sklearn.ensemble import GradientBoostingRegressor

# Model Selection and Evaluation
from sklearn.model_selection import train_test_split

# Feature Scaling
from sklearn.preprocessing import StandardScaler

# Performance
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
from sklearn.metrics import r2_score

Предварительная обработка данных

Загрузите набор данных

dataset = pd.read_csv('data.csv')

Сбрасывание нерелевантных колонн Наш набор данных состоит из строк 18207 и 89 столбцов. Не все столбцы понадобятся для наших моделей

to_stay=["ID","Age","Overall","Potential","Value","Wage"]

dataset.drop(dataset.columns.difference(to_stay),axis="columns",inplace=True)

Установите столбец ID в качестве индекса набора данных

dataset.set_index("ID",inplace=True)

Наш набор данных в настоящее время в этой форме ID, возраст, в целом, потенциал, стоимость, заработная плата 158023, 31, 94, 94, € 110,5 млн, 565 тыс. Евро 16254, 39, 72, 72, 210 тыс. Евро, 3K €

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

# Remove the euros sign
dataset['Value'] = dataset['Value'].apply(lambda x: x.split('€')[1])

# Convert all value with 'M' to million and those with 'K' to thousand
dataset['Value'] = dataset['Value'].apply(
    lambda x: float(x.split('M')[0])*1000000 
    if x.split('M').__len__() > 1 else float(x.split('K')[0])*1000
)

Преобразовать столбец заработной платы из строки в числовое значение Так же, как мы преобразовали столбец значения из строки в номер, нам в равной степени необходимо преобразовать столбец заработной платы из строки в номер

dataset['Wage'] = dataset['Wage'].apply(lambda x: x.split('€')[1])
dataset['Wage'] = dataset['Wage'].apply(
    lambda x: float(x.split('M')[0])*1000000 
    if x.split('M').__len__() > 1 else float(x.split('K')[0])*1000
)

Разделите набор данных на обучающий набор и набор тестов

X = dataset[['Age', 'Overall', 'Potential', 'Wage']]
y = dataset['Value']

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

Создание наших моделей

Множественная линейная регрессия

# Training the Multiple Linear Regression model on the Training set
regressor = LinearRegression()
regressor.fit(X_train, y_train)

Регрессия дерева решений

# Training the Decision Tree Regression model on the Training set
regressor = DecisionTreeRegressor()
regressor.fit(X_train, y_train)

Случайная регрессионная модель леса

# Training the Random Forest Regression model on the Training set
regressor = RandomForestRegressor(n_estimators = 300)
regressor.fit(X_train, y_train)

SVR Model При создании модели SVR мы должны выполнить масштабирование функций на нашем наборе данных, прежде чем построить модель

# Feature Scaling
sc_X = StandardScaler()
sc_y = StandardScaler()
scaled_X_train = sc_X.fit_transform(X_train)
scaled_y_train = sc_y.fit_transform(y_train.values.reshape(len(y_train),1))

# Training the SVR model on the Training set
regressor = SVR(kernel = 'rbf')
regressor.fit(scaled_X_train, scaled_y_train)

Модель регрессии повышения градиента

# Training the Gradient Boosting Regression model on the Training set
regressor = GradientBoostingRegressor(n_estimators = 500)
regressor.fit(X_train, y_train)

Чтобы предсказать результат тестового набора для моделей без SVR

y_pred = regressor.predict(X_test)

Для модели SVR

y_pred = sc_y.inverse_transform(regressor.predict(sc_X.transform(X_test)))

Вы можете просто оценить производительность различных моделей, запустив код ниже

mse = mean_squared_error(y_test, y_pred)
mae = mean_absolute_error(y_test, y_pred)
score = r2_score(y_test, y_pred)
print('Accuracy:',format(score * 100,'.2f'),'%')

Но лучший способ оценить ваши модели – использовать перекрестную проверку

scores = cross_val_score(estimator = regressor, X = X_train, y = y_train, cv = 10)
print("Accuracy: {:.2f} %".format(scores.mean() * 100))
print("Standard Deviation: {:.2f} %".format(scores.std() * 100))

Оценка различных моделей показывает, что модель регрессии повышения градиента имеет лучшую производительность

# New observation
age = 20
overall_rating = 70
potential_rating = 80
wage = 50000

Для моделей без SVR

regressor.predict([[age,overall_rating, potential_rating, wage]])   

Для модели SVR

sc_y.inverse_transform(regressor.predict(sc_X.transform([[age,overall_rating, potential_rating, wage]])))

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

Счастливого кодирования и наслаждаться машинным обучением

Оригинал: “https://dev.to/jundelikwo/predicting-fifa19-player-market-value-2dc7”