top of page

Student Performance Dataset - Classification and Regression

Updated: Nov 3, 2021




Description :


This dataset contains information about student performance in secondary education of two Portuguese schools. The data attributes are student grades, demographic, social and school related features) and it was collected by using school reports and questionnaires. Two datasets are provided regarding the student performance in two subjects: Mathematics (mat) and Portuguese language (por). The two datasets were modeled under binary/five-level classification and regression tasks. Important note: the target attribute G3 has a strong correlation with attributes G2 and G1. This occurs because G3 is the final year grade (issued at the 3rd period), while G1 and G2 correspond to the 1st and 2nd period grades. It is more difficult to predict G3 without G2 and G1, but such prediction is much more useful (see paper source for more details).


Recommended Model :


Algorithms to be used, regression, random forest, Support Vector Machines, Logistic regression, decision tree, naive bayes etc.


Recommended Projects :


To predict the student performance based on the student related information.


Dataset link



Overview of data


Detailed overview of dataset

Records in the dataset = 649 ROWS

Columns in the dataset = 33 COLUMNS


# Attributes for both student-mat.csv (Math course) and student-por.csv (Portuguese language course) datasets:

1 school - student's school (binary: 'GP' - Gabriel Pereira or 'MS' - Mousinho da Silveira)

2 sex - student's sex F-female M- Male

3 age - student's age (numeric: from 15 to 22)

4 address - student's home address type (binary: 'U' - urban or 'R' - rural)

5 famsize - family size (binary: 'LE3' - less or equal to 3 or 'GT3' - greater than 3)

6 Pstatus - parent's cohabitation status (binary: 'T' - living together or 'A' - apart)

7 Medu - mother's education (numeric: 0 - none, 1 - primary education (4th grade), 2 - 5th to 9th grade, 3 - secondary education or 4 - higher education)

8 Fedu - father's education (numeric: 0 - none, 1 - primary education (4th grade), 2 - 5th to 9th grade, 3 - secondary education or 4 - higher education)

9 Mjob - mother's job (nominal: 'teacher', 'health' care related, civil 'services' (e.g. administrative or police), 'at_home' or 'other')

10 Fjob - father's job (nominal: 'teacher', 'health' care related, civil 'services' (e.g. administrative or police), 'at_home' or 'other')

11 reason - reason to choose this school (nominal: close to 'home', school 'reputation', 'course' preference or 'other')

12 guardian - student's guardian (nominal: 'mother', 'father' or 'other')

13 traveltime - home to school travel time (numeric: 1 - <15 min., 2 - 15 to 30 min., 3 - 30 min. to 1 hour, or 4 - >1 hour)

14 study time - weekly study time (numeric: 1 - <2 hours, 2 - 2 to 5 hours, 3 - 5 to 10 hours, or 4 - >10 hours)

15 failures - number of past class failures (numeric: n if 1<=n<3, else 4)

16 schoolsup - extra educational support (binary: yes or no)

17 famsup - family educational support (binary: yes or no)

18 paid - extra paid classes within the course subject (Math or Portuguese) (binary: yes or no)

19 activities - extracurricular activities (binary: yes or no)

20 nursery - attended nursery school (binary: yes or no)

21 higher - wants to take higher education (binary: yes or no)

22 internet - Internet access at home (binary: yes or no)

23 romantic - with a romantic relationship (binary: yes or no)

24 famrel - quality of family relationships (numeric: from 1 - very bad to 5 - excellent)

25 freetime - free time after school (numeric: from 1 - very low to 5 - very high)

26 goout - going out with friends (numeric: from 1 - very low to 5 - very high)

27 Dalc - workday alcohol consumption (numeric: from 1 - very low to 5 - very high)

28 Walc - weekend alcohol consumption (numeric: from 1 - very low to 5 - very high)

29 health - current health status (numeric: from 1 - very bad to 5 - very good)

30 absences - number of school absences (numeric: from 0 to 93)

these grades are related with the course subject, Math or Portuguese:

31 G1 - first period grade (numeric: from 0 to 20)

32 G2 - second period grade (numeric: from 0 to 20)

33 G3 - final grade (numeric: from 0 to 20, output target)


EDA [CODE]


Dataset



import pandas as pd
# Load Data
file_loc = "data\\student-por.csv"
student_performance_data = pd.read_csv(file_loc,sep=";")
forest_fire_data.head()


Total number of Rows and column in the dataset


# Number of Rows and columns 
rows_col = student_performance_data.shape
print("Total number of Rows in the dataset : {}".format(rows_col[0]))
print("Total number of columns in the dataset : {}".format(rows_col[1]))


Dataset information


# Data information
student_performance_data.info()

Check the number of missing values in the dataset.


# Missing Values
student_performance_data.isna().sum()

Statistical information


# Statistical information
student_performance_data.describe()


Data Visualization


Correlation


import seaborn as sns
import matplotlib.pyplot as plt
# correlation
corr = student_performance_data.corr()
corr.style.background_gradient(cmap='coolwarm')


Histogram of age

# Histogram 
plt.figure(figsize=(8,5))
sns.histplot(x="age",data=student_performance_data)

Count plot of Gender


sns.set_style("whitegrid")
plt.figure(figsize=(8,5))
sns.countplot(x= "sex",data=student_performance_data)



Count plot of Mother Education

sns.set_style("whitegrid")
plt.figure(figsize=(8,5))
sns.countplot(x= "Medu",data=student_performance_data)



Count plot of the Father Education


sns.set_style("whitegrid")
plt.figure(figsize=(8,5))
sns.countplot(x= "Fedu",data=student_performance_data)


Histogram of Grade 1

# Histogram 
plt.figure(figsize=(8,5))
sns.histplot(x="G1",data=student_performance_data)


Histogram plot of Grade 2

# Histogram 
plt.figure(figsize=(8,5))
sns.histplot(x="G2",data=student_performance_data)


Histogram plot of Grade 3


# Histogram 
plt.figure(figsize=(8,5))
sns.histplot(x="G3",data=student_performance_data)



Other related data



If you need implementation for any of the topics mentioned above or assignment help on any of its variants, feel free to contact us


bottom of page