/
Nik_voz
/
rgpu_python_analysis
Обзор
Документация
Войти
/
Nik_voz
/
rgpu_python_analysis
Код
Запросы
1
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
python_analysis/second_semestr/pract5-2.py
80 строк
2 KB
Nick-voz
feat: add decision tree classifier and random forest regressor implementations
26 мар 2026, 06:50
26 мар 2026, 06:50
c1feb41
Код
Авторство
О чём код?
import os import matplotlib.pyplot as plt import pandas as pd import seaborn as sns from dotenv import load_dotenv from sklearn.metrics import accuracy_score from sklearn.tree import DecisionTreeClassifier from sklearn.tree import plot_tree load_dotenv() TRAIN_PATH = os.getenv("TRAIN_PATH") or "train.csv" TEST_PATH = os.getenv("TEST_PATH") or "test.csv" train_data = pd.read_csv(TRAIN_PATH) test_data = pd.read_csv(TEST_PATH) plt.figure(figsize=(15, 10)) plt.subplot(2, 3, 1) sns.countplot(x="Survived", data=train_data) plt.title("Выжившие/Погибшие") plt.subplot(2, 3, 2) sns.countplot(x="Survived", hue="Sex", data=train_data) plt.title("Выживаемость по полу") plt.subplot(2, 3, 3) sns.countplot(x="Survived", hue="Pclass", data=train_data) plt.title("Выживаемость по классу") plt.subplot(2, 3, 4) sns.countplot(x="Survived", hue="SibSp", data=train_data) plt.title("Выживаемость по количеству братьев/сестер/супругов") plt.subplot(2, 3, 5) sns.countplot(x="Survived", hue="Parch", data=train_data) plt.title("Выживаемость по количеству родителей/детей") plt.tight_layout() plt.savefig("titanic_stats.png", dpi=300, bbox_inches="tight") features = ["Sex", "Pclass", "SibSp", "Parch"] y = train_data["Survived"] X = pd.get_dummies(train_data[features]) X_test = pd.get_dummies(test_data[features]) model = DecisionTreeClassifier( max_depth=5, random_state=1, ) model.fit(X, y) train_predictions = model.predict(X) train_accuracy = accuracy_score(y, train_predictions) plt.figure(figsize=(20, 15)) plot_tree( model, feature_names=list(X.columns), class_names=["Погиб", "Выжил"], filled=True, rounded=True, ) plt.title("Дерево решений (Titanic)") plt.savefig("titanic_tree.png", dpi=300, bbox_inches="tight") feature_importance = pd.DataFrame( {"feature": X.columns, "importance": model.feature_importances_} ).sort_values("importance", ascending=False) plt.figure(figsize=(15, 10)) sns.barplot(data=feature_importance, x="importance", y="feature") plt.title("Важность признаков") plt.savefig("titanic_importance_of_features.png", dpi=300, bbox_inches="tight")