Наука о данных
February 2

📊 Предсказание оценок студентов с помощью линейной регрессии 🎓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)

Разделим наш набор данных на признаки (X) и целевую переменную (Y)

🤖 Обучение модели

Теперь создадим и обучим модель линейной регрессии:

Обучение модели

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, тем лучше модель объясняет данные)

Хотя линейная регрессия является простым и понятным методом, у нее есть ограничения:

  1. 📊 Линейность зависимостей — если в данных есть нелинейные связи, метод может давать неточные предсказания.
  2. ⚠️ Чувствительность к выбросам — аномальные значения могут сильно влиять на точность модели.
  3. 🔄 Мультиколлинеарность — если входные переменные сильно коррелируют между собой, модель может работать некорректно.

🚀 Заключение

Мы рассмотрели, как можно предсказывать оценки студентов с помощью линейной регрессии. Этот метод помогает выявлять факторы, влияющие на успех в учебе, и может быть полезным инструментом для анализа данных в образовании.

Если вас интересует машинное обучение и аналитика данных, попробуйте реализовать этот проект самостоятельно в Google colab с кодом! 🎓🚀

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