codescraftman / machinelearning / models.py
models.py
Raw
from django.db import models

# Regression Model
class RegressionModel(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()
    model_file = models.FileField(upload_to='regression_models/')
    accuracy = models.FloatField(null=True, blank=True)
    loss = models.FloatField(null=True, blank=True)
    r_squared = models.FloatField(null=True, blank=True)  # R-squared metric
    mean_squared_error = models.FloatField(null=True, blank=True)  # MSE metric
    mean_absolute_error = models.FloatField(null=True, blank=True)  # MAE metric
    date_trained = models.DateTimeField(auto_now_add=True)
    is_active = models.BooleanField(default=True)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "Regression Model"
        verbose_name_plural = "Regression Models"


# Classification Model
class ClassificationModel(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()
    model_file = models.FileField(upload_to='classification_models/')
    accuracy = models.FloatField(null=True, blank=True)
    loss = models.FloatField(null=True, blank=True)
    precision = models.FloatField(null=True, blank=True)  # Precision metric
    recall = models.FloatField(null=True, blank=True)  # Recall metric
    f1_score = models.FloatField(null=True, blank=True)  # F1-score metric
    auc_roc = models.FloatField(null=True, blank=True)  # AUC-ROC metric
    date_trained = models.DateTimeField(auto_now_add=True)
    is_active = models.BooleanField(default=True)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "Classification Model"
        verbose_name_plural = "Classification Models"


# NLP Model
class NLPModel(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()
    model_file = models.FileField(upload_to='nlp_models/')
    accuracy = models.FloatField(null=True, blank=True)
    loss = models.FloatField(null=True, blank=True)
    bleu_score = models.FloatField(null=True, blank=True)  # BLEU score for NLP tasks
    perplexity = models.FloatField(null=True, blank=True)  # Perplexity for language models
    rouge_score = models.FloatField(null=True, blank=True)  # ROUGE score for summarization
    date_trained = models.DateTimeField(auto_now_add=True)
    is_active = models.BooleanField(default=True)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "NLP Model"
        verbose_name_plural = "NLP Models"


# Unsupervised Model
class UnsupervisedModel(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()
    model_file = models.FileField(upload_to='unsupervised_models/')
    silhouette_score = models.FloatField(null=True, blank=True)  # Silhouette score for clustering
    inertia = models.FloatField(null=True, blank=True)  # Inertia for k-means clustering
    date_trained = models.DateTimeField(auto_now_add=True)
    is_active = models.BooleanField(default=True)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name = "Unsupervised Model"
        verbose_name_plural = "Unsupervised Models"