This is an open source data set that can be accessed through the UCI Machine Learning Repository
The data set examined in this report can be accessed here here: https://archive.ics.uci.edu/ml/datasets/Student+Performance
Data Set Information:
This data approach student achievement in secondary education of two Portuguese schools. The data was collected by using school reports and questionnaires. This dataset examines Mathematics (mat) performance. In [Cortez and Silva, 2008]. 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.
Attribute Information:
- 1 school - student’s school (binary: ‘GP’ - Gabriel Pereira or ‘MS’ - Mousinho da Silveira)
- 2 sex - student’s sex (binary: ‘F’ - female or ‘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 studytime - 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 - extra-curricular 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)
## Loading required package: lattice
## Loading required package: ggplot2
## Rattle: A free graphical interface for data mining with R.
## Version 3.4.1 Copyright (c) 2006-2014 Togaware Pty Ltd.
## Type 'rattle()' to shake, rattle, and roll your data.
std <- read.csv("student-mat.csv", header=TRUE, sep=";")
attach(std)
lm.fit=lm(std$G3~std$G2)
summary(lm.fit)
##
## Call:
## lm(formula = std$G3 ~ std$G2)
##
## Residuals:
## Min 1Q Median 3Q Max
## -9.6284 -0.3326 0.2695 1.0653 3.5759
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.39276 0.29694 -4.69 3.77e-06 ***
## std$G2 1.10211 0.02615 42.14 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.953 on 393 degrees of freedom
## Multiple R-squared: 0.8188, Adjusted R-squared: 0.8183
## F-statistic: 1776 on 1 and 393 DF, p-value: < 2.2e-16
par(mfrow=c(2,2))
plot(lm.fit)
p = ggplot(std, aes(x=G2,y=G3, colour=studytime)) + geom_point()
p = p + geom_point()
p = p + stat_smooth(method="lm", se=FALSE)
p
#qplot(G2, G3, data=std)#, colour=studytime)
#abline(lm.fit, col="blue")
inTrain <- createDataPartition(std$school, p=0.7, list=FALSE)
training <- std[inTrain,]; testing <- std[-inTrain,]
modFit2 <- train(G3 ~ ., method ="rpart", data=training)
## Warning in nominalTrainWorkflow(x = x, y = y, wts = weights, info =
## trainInfo, : There were missing values in resampled performance measures.
fancyRpartPlot(modFit2$finalModel)