🌳 Прогнозирование оценок студентов с помощью 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)
📈 Оценка модели
Оценим точность модели с помощью метрик 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 – блог о машинном обучении
🔹 Телеграм-канал – свежие новости и обсуждения