import pandas as pd
from sklearn.metrics import accuracy_score, mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

# Загрузка данных
data = pd.read_csv('stroke_prediction_ds.csv')

# Приведение данных к цифровому значению
data['gender'] = data['gender'].map({'Male': 0, 'Female': 1})
data['ever_married'] = data['ever_married'].map({'No': 0, 'Yes': 1})

# Определение признаков
X = data[['hypertension', 'heart_disease', 'ever_married', 'gender']]

# Целевая переменная
y = data['stroke']

# Разделение данных на обучающую и тестовую выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Создание модели
dt_classifier = DecisionTreeClassifier(random_state=42)

# Обучение модели
dt_classifier.fit(X_train, y_train)

# Вычисление важности признаков
feature_importances = dt_classifier.feature_importances_

# Вычисление 'Accuracy' модели
predictions = dt_classifier.predict(X_test)
accuracy = accuracy_score(y_test, predictions)

# Вычисление средней квадратичной ошибки
mse = mean_squared_error(y_test, predictions)

# Вывод результатов
print(X.head(10))
print(f'Важность признаков:" {feature_importances}')
print(f'Accuracy модели: {round(accuracy * 100)}%')
print("Средняя квадратичная ошибка: {:.2f}%".format(mse * 100))