Набор данных student-mat.csv

Набор данных student-mat.csv — это хорошо известный файл, содержащий 33 столбца и 395 строк. Каждая строка представляет отдельного учащегося, а каждый столбец — отдельный атрибут. Этот набор данных очень интересен тем, что, помимо прочего, многое говорит о том, что способствует успеваемости. Вот некоторые столбцы (атрибуты), доступные в файле.

  • Возраст.
  • Семейный размер.
  • Уровень образования матери.
  • Уровень образования отца.
  • Учебное время.
  • Неудачи.
  • Здоровье.
  • Отсутствия.
  • Первый класс (G1)
  • Второй период (G2).
  • Итоговая оценка (G3).

Что такое регресс?

Регрессия — это статистическая модель, используемая для прогнозирования взаимосвязи между независимыми и зависимыми переменными — в машинном обучении независимые переменные называются «признаками», тогда как зависимая переменная называется «меткой». Регрессия используется для ответа на такие вопросы, как «сколько?» и «сколько?» Например, сколько денег мы могли бы заработать? Вообще говоря, существует три типа проблем регрессии.

  1. Одиночная линейная: одна функция, линейно связанная с меткой.
  2. Одиночный нелинейный: один объект, не связанный линейно с меткой.
  3. Многофункциональный: более одной функции, но только один ярлык.

В этом посте я обучаю алгоритм регрессии с использованием трех переменных (G1, G2 и G3) из набора данных student-mat.csv — этот проект представляет собой единственную задачу нелинейной регрессии.

ОБУЧИТЕ АЛГОРИТМ РЕГРЕССИИ, ИСПОЛЬЗУЯ НЕСКОЛЬКО ФУНКЦИЙ (G1 И G2) ИЗ НАБОРА ДАННЫХ STUDENT-MAT.CSV

Шаг 1. Откройте новое ядро ​​Python из папки, содержащей файл student-mat.csv.

Шаг 2: Импортируйте необходимые библиотеки

import pandas as pd
import numpy as np
import sklearn
from sklearn import linear_model
from sklearn.utils import shuffle
import seaborn as sns
import plotly.express as px

Шаг 3. Получите доступ к набору данных student-mat.csv.

data = pd.read_csv("student-mat.csv", sep=";")
data.shape
data.head(5)

Шаг 4. Просмотрите корреляцию между переменными

После визуализации взаимосвязей я заметил, что столбцы G1 и G2 значительно связаны с G3 — больше, чем любой другой атрибут. Это интересно, потому что это означает, что более низкие оценки G1 означают более низкие оценки G3 (итоговые оценки) и наоборот. Кроме того, более высокие оценки G2 означают более высокие оценки G3, и наоборот. Может ли это означать, что последовательность является ключом к академической успеваемости? Другими словами, те студенты, которые раньше выступали, будут выступать и в будущем. Хотя необходимы дополнительные исследования, это интересное понимание.

sns.heatmap(data.corr())

Шаг 5: Нанесите G1, G2 и G3 на точечные диаграммы, чтобы визуализировать их отношения

fig = px.scatter(data, x="G1", y="G3", color="G2", hover_data=['G3'],
                width=600, height=400, title = "Visualizing first and final grades of all students",
            labels={ # replaces default labels by column name
                "G1": "1st Grade",  "G3": "Final Grade"},           
            template="simple_white")
fig.show()

fig = px.scatter(data, x="G2", y="G3", color="G2", hover_data=['G3'],
                width=600, height=400, title = "Visualizing second and final grades of all students",
            labels={ # replaces default labels by column name
                "G2": "2nd Grade",  "G3": "Final Grade"},          
            template="simple_white")
fig.show()

Шаг 6: Выберите функции и метки

data = data[["G1", "G2", "G3"]]
predict = "G3"
X = np.array(data.drop([predict], 1))
y = np.array(data[predict])

Шаг 7: Случайным образом разделите данные по 10% на набор данных «Обучение» и набор данных «Тест».

x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, test_size = 0.1)

Шаг 8: Обучите алгоритм регрессии на части «Обучение» набора данных student-mat.csv.

linear = linear_model.LinearRegression()
linear.fit(x_train, y_train)
acc = linear.score(x_test, y_test)
print(acc)

Шаг 9: Просмотр коэффициентов и точки пересечения по оси Y модели

print('Coefficient: \n', linear.coef_)
print('Intercept: \n', linear.intercept_)

Шаг 10. Сделайте несколько прогнозов, используя набор данных «Тест».

predictions = linear.predict(x_test)
for x in range(len(predictions)):
    print(predictions[x], x_test[x], y_test[x])

Окончательная модель

Итоговая оценка учащегося = (Оценка за первый период * 0,159) + (Оценка за второй период * 0,995) -2,0719

Давайте разберемся с моделью

Хотя для улучшения этой модели требуется дополнительная работа — например, увеличение количества функций в наборе данных — эту модель можно использовать для прогнозирования итоговой оценки учащегося. Вышеприведенный анализ также показывает, что академическая последовательность является лучшим показателем академического успеха.