47 lines
1.8 KiB
Python
47 lines
1.8 KiB
Python
import pandas as pd
|
|
from sklearn.tree import DecisionTreeRegressor
|
|
from sklearn.model_selection import train_test_split
|
|
|
|
# Загрузка данных
|
|
data = pd.read_csv("Current_Pub_Meta.csv")
|
|
|
|
# Отбор нужных столбцов
|
|
selected_columns = ['Herald Win Rate', 'Primary Attribute', 'Herald Picks', 'Roles']
|
|
data = data[selected_columns]
|
|
|
|
# Фильтрация по ролям Carry и Support
|
|
data = data[data['Roles'].apply(lambda x: 'Carry' in x or 'Support' in x)]
|
|
|
|
# Создание столбцов для каждой роли и заполнение их значениями 1 или 0
|
|
data['IsCarry'] = data['Roles'].apply(lambda x: 1 if 'Carry' in x else 0)
|
|
data['IsSupport'] = data['Roles'].apply(lambda x: 1 if 'Support' in x else 0)
|
|
|
|
# Удаление столбца Roles
|
|
data.drop('Roles', axis=1, inplace=True)
|
|
|
|
# Замена категориальных переменных на числовые
|
|
data['Primary Attribute'] = data['Primary Attribute'].map({'str': 0, 'all': 1, 'int': 2, 'agi': 3})
|
|
|
|
# Разделение данных на обучающую и тестовую выборки
|
|
X = data.drop('Herald Win Rate', axis=1)
|
|
y = data['Herald Win Rate']
|
|
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
|
|
|
|
# Обучение модели
|
|
model = DecisionTreeRegressor()
|
|
model.fit(X_train, y_train)
|
|
|
|
# Прогноз на тестовой выборке
|
|
y_pred = model.predict(X_test)
|
|
|
|
# Вывод обработанных данных
|
|
print("Обработанные данные:")
|
|
print(data)
|
|
|
|
# Оценка значимости признаков
|
|
feature_importances = model.feature_importances_
|
|
print("Feature Importances:", feature_importances)
|
|
|
|
# Оценка score модели
|
|
score = model.score(X_test, y_test)
|
|
print("Score:", score) |