This repository undertakes the challenge of predicting student dropout and academic success through an extensive exploratory data analysis (EDA) of data and supervised machine learning (ML) models. Our EDA focuses on understanding the nuances of data through univariate, bivariate, and multivariate analyses, alongside anomaly detection, to identify predictors of student outcomes. Moreover, multiple ML models have been used and tuned to get the best performance of each.
To interact with the model, you can try to input your own data and check the results of our best-performing models. Here is a step-by-step on how to use the UI:
To use our mobile app, here are the steps to follow:
The project is structured in a way to easily integrate new models and datasets, through a common BaseModel class. The next section provides more detail on how to achieve that.
This guide explains how to add a new machine learning model to the existing framework by inheriting from the BaseModel class. This ensures that all models maintain a consistent interface and functionality.
Before you start, make sure you are familiar with:
- Python programming
- Basic machine learning concepts
- The scikit-learn library
- Create a new Python file in the
models/directory. - Name the file according to your model, e.g.,
your_model.py.
At the top of your file, import the necessary modules. You must import the BaseModel class from the base model file:
from .base_model import BaseModel
from sklearn.something import YourModelClassifier # Import your specific model class from scikit-learn or another libraryCreate a new class that inherits from BaseModel:
class YourModel(BaseModel):
def __init__(self, X_train, X_test, y_train, y_test):
super().__init__(X_train, X_test, y_train, y_test)Implement the fit and test_configurations methods. The fit method should train the model on the training data, and test_configurations should find the best model configuration:
def fit(self, param1=default_value):
self.model = YourModelClassifier(param1=param1)
self.model.fit(self.X_train, self.y_train)
def test_configurations(self):
# Implement your logic to test different configurations and store the best result in self.resultsIf needed, you can override other methods from the BaseModel class, such as evaluate, save_model, or load_model.
To test your new model, import and use it in the main.py script, similar to how other models are used:
from models.your_model import YourModel
# In the appropriate section of main.py
model = YourModel(X_train, X_test, y_train, y_test)
best_config = model.run()
print(best_config)Provide documentation for your model class, methods, and any important logic to help others understand and effectively use your model.