Набор данных student-mat.csv
Набор данных student-mat.csv — это хорошо известный файл, содержащий 33 столбца и 395 строк. Каждая строка представляет отдельного учащегося, а каждый столбец — отдельный атрибут. Этот набор данных очень интересен тем, что, помимо прочего, многое говорит о том, что способствует успеваемости. Вот некоторые столбцы (атрибуты), доступные в файле.
- Возраст.
- Семейный размер.
- Уровень образования матери.
- Уровень образования отца.
- Учебное время.
- Неудачи.
- Здоровье.
- Отсутствия.
- Первый класс (G1)
- Второй период (G2).
- Итоговая оценка (G3).
Что такое регресс?
Регрессия — это статистическая модель, используемая для прогнозирования взаимосвязи между независимыми и зависимыми переменными — в машинном обучении независимые переменные называются «признаками», тогда как зависимая переменная называется «меткой». Регрессия используется для ответа на такие вопросы, как «сколько?» и «сколько?» Например, сколько денег мы могли бы заработать? Вообще говоря, существует три типа проблем регрессии.
- Одиночная линейная: одна функция, линейно связанная с меткой.
- Одиночный нелинейный: один объект, не связанный линейно с меткой.
- Многофункциональный: более одной функции, но только один ярлык.
В этом посте я обучаю алгоритм регрессии с использованием трех переменных (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
Давайте разберемся с моделью
Хотя для улучшения этой модели требуется дополнительная работа — например, увеличение количества функций в наборе данных — эту модель можно использовать для прогнозирования итоговой оценки учащегося. Вышеприведенный анализ также показывает, что академическая последовательность является лучшим показателем академического успеха.