# -*- coding: utf-8 -*-
import os
from django.db import models
if 'DJANGO_TEST' in os.environ:
from django_ai.systems.spam_filtering.models import (
IsSpammable,
SpamFilterPreTraining,
)
APP_LABEL = "django_ai.examples"
else: # pragma: no cover
from systems.spam_filtering.models import (
IsSpammable,
SpamFilterPreTraining,
)
APP_LABEL = "examples"
class UserInfo(models.Model):
"""
Example User Information Model
"""
SEX_CHOICES = [(0, "M"), (1, "F")]
age = models.IntegerField("Age")
sex = models.SmallIntegerField("Sex", choices=SEX_CHOICES,
blank=True, null=True)
# -> Metrics
avg1 = models.FloatField("Average 1", blank=True, null=True)
avg_time_pages = models.FloatField("Average Time on Pages",
default=0, blank=True, null=True)
visits_pages = models.IntegerField("Visits on Pages (Total)",
default=0)
avg_time_pages_a = models.FloatField("Average Time on Pages of type A",
default=0, blank=True, null=True)
visits_pages_a = models.IntegerField("Visits on Pages of type A",
default=0)
avg_time_pages_b = models.FloatField("Average Time on Pages of type B",
default=0, blank=True, null=True)
visits_pages_b = models.IntegerField("Visits on Pages of type B",
default=0)
avg_time_pages_c = models.FloatField("Average Time on Pages of type C",
default=0, blank=True, null=True)
visits_pages_c = models.IntegerField("Visits on Pages of type C",
default=0)
avg_time_pages_d = models.FloatField("Average Time on Pages of type D",
default=0, blank=True, null=True)
visits_pages_d = models.IntegerField("Visits on Pages of type D",
default=0)
avg_time_pages_e = models.FloatField("Average Time on Pages of type E",
default=0, blank=True, null=True)
visits_pages_e = models.IntegerField("Visits on Pages of type E",
default=0)
avg_time_pages_f = models.FloatField("Average Time on Pages of type F",
default=0, blank=True, null=True)
visits_pages_f = models.IntegerField("Visits on Pages of type F",
default=0)
avg_time_pages_g = models.FloatField("Average Time on Pages of type G",
default=0, blank=True, null=True)
visits_pages_g = models.IntegerField("Visits on Pages of type G",
default=0)
avg_time_pages_h = models.FloatField("Average Time on Pages of type H",
default=0, blank=True, null=True)
visits_pages_h = models.IntegerField("Visits on Pages of type H",
default=0)
avg_time_pages_i = models.FloatField("Average Time on Pages of type I",
default=0, blank=True, null=True)
visits_pages_i = models.IntegerField("Visits on Pages of type I",
default=0)
avg_time_pages_j = models.FloatField("Average Time on Pages of type J",
default=0, blank=True, null=True)
visits_pages_j = models.IntegerField("Visits on Pages of type J",
default=0)
# -> Results
cluster_1 = models.CharField("Cluster 1", max_length=1,
blank=True, null=True)
class Meta:
verbose_name = "User Info"
verbose_name_plural = "Users Infos"
app_label = APP_LABEL
def __str__(self):
return("{} - S: {}, A:{} - Group: {}".format(
self.id, self.get_sex_display(), self.age, self.cluster_1)
)
class SFPTEnron(SpamFilterPreTraining):
class Meta:
verbose_name = "Spam Filter Pre-Training: Enron Email Data"
verbose_name_plural = "Spam Filter Pre-Training: Enron Emails Data"
app_label = APP_LABEL
class SFPTYoutube(SpamFilterPreTraining):
class Meta:
verbose_name = "Spam Filter Pre-Training: Youtube Comment Data"
verbose_name_plural = ("Spam Filter Pre-Training: "
"Youtube Comments Data")
app_label = APP_LABEL