February 2

🌳 Прогнозирование оценок студентов с помощью Random Forest Regression | 3 часть

📌 Введение

Это продолжение серии статей по прогнозированию оценок студентов. В предыдущих материалах мы рассматривали линейную регрессию и нейронные сети. Теперь изучим алгоритм Random Forest Regression, который объединяет предсказания нескольких деревьев решений для создания надежной модели.

график, показывающий фактические и предсказанные оценки

🎯 Почему Random Forest?

🔹 Стабильность: В отличие от одиночного дерева решений, Random Forest снижает риск переобучения.
🔹 Гибкость: Может работать с нелинейными зависимостями и взаимодействиями между признаками.
🔹 Высокая точность: За счет объединения предсказаний нескольких деревьев, модель показывает лучшие результаты.

⚙️ Подготовка окружения

Перед началом работы установим необходимые библиотеки:

pip install pandas numpy matplotlib seaborn scikit-learn

Затем импортируем их в коде:

import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestRegressor from sklearn.metrics import mean_squared_error, r2_score, mean_absolute_error

📂 Загрузка данных

Используем тот же набор данных Student Performance Dataset с Kaggle:

df = pd.read_csv('data.csv') print(df.head())

Загрузка данных

📊 Признаки:

  • Socioeconomic Score (Социально-экономический статус)
  • Study Hours (Часы учебы)
  • Sleep Hours (Часы сна)
  • Attendance (%) (Посещаемость)
  • Grades (Оценки) – целевая переменная

🔎 Исследование данных

Построим корреляционную матрицу, чтобы понять взаимосвязь признаков

plt.figure(figsize=(10, 6)) sns.heatmap(df.corr(), annot=True, cmap='coolwarm', fmt='.2f', linewidths=0.5) plt.title('Корреляционная матрица') plt.show()

Построим корреляционную матрицу, чтобы понять взаимосвязь признаков

🔄 Разделение данных

Разделим данные на признаки (X) и цель (y):

X = df.drop(columns=['Grades']) y = df['Grades']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

🌳 Создание модели Random Forest

Настроим модель с 100 деревьями и обучим её:

rf_model = RandomForestRegressor(n_estimators=100, random_state=42) rf_model.fit(X_train, y_train)

Создание модели Random Forest

📈 Оценка модели

Оценим точность модели с помощью метрик MAE, MSE и R²:

y_pred = rf_model.predict(X_test)

mae = mean_absolute_error(y_test, y_pred) mse = mean_squared_error(y_test, y_pred) r2 = r2_score(y_test, y_pred)

print(f'📉 MAE: {mae}') print(f'📊 MSE: {mse}') print(f'📈 R²: {r2}')

Оценка модели

📌 Сравнение с другими моделями:

Сравнение с другими моделями

Как видно, Random Forest Regression превосходит линейную регрессию и нейросеть по точности!

🚀 Заключение

Random Forest Regression – мощный инструмент для предсказания оценок студентов. Он продемонстрировал наилучшие результаты среди протестированных моделей.

📌 Выводы:

  • Улучшает точность предсказаний за счет ансамбля деревьев
  • Лучшая метрика R² = 0.98 по сравнению с другими моделями
  • Подходит для анализа сложных зависимостей между данными

Попробуйте реализовать этот проект самостоятельно и сравните результаты с другими методами, код Google Colab! 🎓🚀

📢 Подписывайтесь, чтобы не пропустить новые материалы!
🔹 Teletype.in – блог о машинном обучении
🔹 Телеграм-канал – свежие новости и обсуждения