📊 Предсказание оценок студентов с помощью линейной регрессии 🎓1 часть
📝 Введение
Как предсказать успех студента в учебе? Один из методов — анализ данных с помощью линейной регрессии. В этой статье разберем, как с помощью Python можно построить модель, которая прогнозирует итоговые оценки студентов на основе нескольких факторов:
- 📈 Социально-экономический статус
- 📚 Количество часов, затраченных на учебу
- 😴 Продолжительность сна
- 🎒 Посещаемость занятий
🔍 Основные принципы линейной регрессии
Линейная регрессия — это базовый метод машинного обучения, который позволяет предсказывать числовые значения на основе зависимостей между входными переменными. В нашем случае — связь между вышеуказанными факторами и итоговыми оценками студентов.
📊 Данные
Мы используем набор данных, который был скачан с платформы Kaggle. Он содержит следующие параметры: Мы используем набор данных, содержащий следующие параметры:
- 📉 Социально-экономический статус (Socioeconomic Score)
- 📖 Учебные часы (Study Hours)
- 🌙 Часы сна (Sleep Hours)
- ✅ Посещаемость (%) (Attendance)
- 🎯 Итоговые оценки (Grades) — целевая переменная, которую мы хотим предсказать.
⚙️ Подготовка данных
Перед тем как построить модель, необходимо подготовить данные. В Python это можно сделать с помощью библиотеки pandas
:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score, mean_absolute_error
import matplotlib.pyplot as plt
# 📂 Загружаем данные
data_path = 'data.csv'
df = pd.read_csv(data_path)
# 👀 Вывод первых строк данных
print(df.head())
🔄 Разделение данных
Разделим наш набор данных на признаки (X) и целевую переменную (Y):X = df[['Socioeconomic Score', 'Study Hours', 'Sleep Hours', 'Attendance (%)']] Y = df['Grades']
# 🔀 Разбиваем данные на тренировочный и тестовый наборыX_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=42)
🤖 Обучение модели
Теперь создадим и обучим модель линейной регрессии:
model = LinearRegression()
model.fit(X_train, Y_train)
🔮 Прогнозирование
После обучения модели можно предсказать оценки студентов на тестовом наборе данных:
Y_pred = model.predict(X_test)
# 📊 Создаем DataFrame с результатами
results_df = pd.DataFrame({
"Actual": Y_test,
"Predicted": Y_pred,
"Absolute Error": abs(Y_test - Y_pred)
})
# 🧐 Выводим несколько строк результатов
print(results_df.head())
📏 Оценка качества модели
Для оценки точности модели используем метрики Mean Absolute Error (MAE), Mean Squared Error (MSE) и R-squared (R²):
mse = mean_squared_error(Y_test, Y_pred)
r2 = r2_score(Y_test, Y_pred)
mae = mean_absolute_error(Y_test, Y_pred)
print(f"📉 Средняя абсолютная ошибка (MAE): {mae}")
print(f"📊 Среднеквадратическая ошибка (MSE): {mse}")
print(f"📈 Коэффициент детерминации (R²): {r2}")
📢 Итоги и ограничения
Модель показала следующие результаты:
- 📉 MAE: 3.39 (чем ниже, тем лучше)
- 📊 MSE: 19.27 (отражает среднее отклонение предсказанных значений от реальных)
- 📈 R²: 0.74 (чем ближе к 1, тем лучше модель объясняет данные)
Хотя линейная регрессия является простым и понятным методом, у нее есть ограничения:
- 📊 Линейность зависимостей — если в данных есть нелинейные связи, метод может давать неточные предсказания.
- ⚠️ Чувствительность к выбросам — аномальные значения могут сильно влиять на точность модели.
- 🔄 Мультиколлинеарность — если входные переменные сильно коррелируют между собой, модель может работать некорректно.
🚀 Заключение
Мы рассмотрели, как можно предсказывать оценки студентов с помощью линейной регрессии. Этот метод помогает выявлять факторы, влияющие на успех в учебе, и может быть полезным инструментом для анализа данных в образовании.
Если вас интересует машинное обучение и аналитика данных, попробуйте реализовать этот проект самостоятельно в Google colab с кодом! 🎓🚀
📢 Подписывайтесь, чтобы не пропустить новые материалы!
🔹 Teletype.in – блог о машинном обучении
🔹 Телеграм-канал – свежие новости и обсуждения