Skip to content

Optimizing and comparing various Supervised Machine Learning models to identify the best configurations on a UCI dataset to predict students' dropout or graduation

Notifications You must be signed in to change notification settings

alidor4702/predict-graduation

 
 

Repository files navigation

Predicting Student Dropout and Academic Success

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:

GraduAIte Mobile App

To use our mobile app, here are the steps to follow:

Step 1:

Step 2:

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.

Extending the Machine Learning Framework

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.

Prerequisites

Before you start, make sure you are familiar with:

  • Python programming
  • Basic machine learning concepts
  • The scikit-learn library

Step 1: Create Your Model File

  1. Create a new Python file in the models/ directory.
  2. Name the file according to your model, e.g., your_model.py.

Step 2: Import Required Modules

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 library

Step 3: Define Your Model Class

Create 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)

Step 4: Implement Required Methods

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.results

Step 5: (Optional) Override Other Methods

If needed, you can override other methods from the BaseModel class, such as evaluate, save_model, or load_model.

Step 6: Testing Your 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)

Step 7: Document Your Model

Provide documentation for your model class, methods, and any important logic to help others understand and effectively use your model.


About

Optimizing and comparing various Supervised Machine Learning models to identify the best configurations on a UCI dataset to predict students' dropout or graduation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Jupyter Notebook 98.8%
  • Other 1.2%