## 3 Data Preparation
### Data Cleaning and Feature Selection
A correlation matrix, created using the Seaborn library in Python, is presented in Figure 2. The following conclusions can be drawn from the correlation values depicted in Figure 2.  
* there is a medium correlation between the key attributes, with the values correlating to the resulting number of points at the end of the course. This finding is not surprising,
* variables _project_ and _tests_ have a slightly stronger correlation with _result_points_ than the other attributes. It can be deduced that they have a more critical impact on the final student's outcome. Therefore, they should be considered thoroughly concerning their occurrence in the course. If used later in the course, they would have a more significant impact on prediction accuracy. Because the prediction should be made as early as possible to have enough time for intervention, the variables _access_, _assignments_, and _tests_ were finally selected as the two most important features. It is necessary to emphasize, that only sum of partial tests, which were realized in the observed period, was taken into account. It can also be stated that a more appropriate attribute for prediction, besides the two mentioned attributes with a high correlation (_project_ and _tests_), is also the number of accesses (_access_). One possible use of this attribute may be to identify students who do not achieve the minimum time allowance (presence or frequency of accesses), thus exposing them to a greater risk of obtaining a weaker point evaluation. \begin{table}
\begin{tabular}{c c c c c c} \hline \hline  & **Access** & **Tests** & **Assignments** & **Exam** & **Project** \\ \hline count & 261.000 & 261.000 & 216.000 & 261.000 & 261.000 \\ mean & 680.295 & 37.941 & 18.077 & 11.555 & 65.513 \\ std & 374.662 & 13.113 & 10.831 & 6.303 & 30.615 \\ min & 13.000 & 0.000 & 0.000 & 0.000 & 0.000 \\
25\% & 440.000 & 34.079 & 11.000 & 9.000 & 66.410 \\
50\% & 605.000 & 40.500 & 14.400 & 14.000 & 75.140 \\
70\% & 898.750 & 46.500 & 24.000 & 16.000 & 84.610 \\ max & 2392.000 & 57.000 & 40.000 & 20.000 & 99.480 \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Descriptive statistics of independent variables for the dataset from years 2016–2019. A supervised machine learning model also requires an example of outputs (target) from which it can learn in addition to the input data. Since the information about the final grades of students was available, it was possible to create a binary target variable. Each student whose final grade was \"FX\" (failed) was assigned a numeric value of 0, while successful students were assigned a numeric value of 1. This way, the binary classification was achieved. Data used in the case study consisted of two parts. The first part, used as a training and testing dataset, contained data from the three academic years (2016-2019). The second part was formed from the most recent run of the course in the year 2020. This data was used for evaluating the performance of the final classification models (Table 2). The evaluation dataset (Table 2) showed a substantial increase in the mean values overall compared to the data from Table 1. These changes in an absolute number of points were established in the last run of the course with the aim to practice the students' skills. The mean values of the category project and tests increased by 14% and 18%, respectively. The categories access and assignments achieved considerable higher mean values of 36% and 42%. They had to be standardized before their use for evaluation of the proposed classification models. Due to this fact, the final step of data preparation was normalisation and standardization of a dataset, which represent common requirements of many machine learning estimators. If the specific feature does not look like the standard data normally distributed, the estimators may behave incorrectly [33]. The data was transformed using Standard Scaler to standardize features by removing the mean and scaling to unit variance.