IIS_2023_1/belyaeva_ekaterina_lab_3/main.py

47 lines
1.8 KiB
Python
Raw Normal View History

2023-10-30 20:52:01 +04:00
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)