Preprocesamiento terminado

parent a9beee39
class Cesta: class Cesta:
def __init__(self, registros, directorios): def __init__(self, directorios, sesiones, tam, i):
# Atributos # Atributos
self.sesion = None self.sesion = sesiones[i]
self.pagina = None self.pagina = directorios[i]
self.directorios = directorios self.directorios = directorios
self.flags = None self.flags = []
self.obtenerFlags(sesiones, tam)
def obtenerFlags(self, sesiones, tam):
# Se rellenan los flags segun si son de la misma sesion o no para cada directorio
for i in range(tam):
if sesiones[i] == self.sesion: # Hay que obtener distribuciones de frecuencia aquí o no ############################3
self.flags.append(True)
else:
self.flags.append(False)
# Se obtienen los directorios aquellos que cumplen el umbral # Se obtienen los directorios aquellos que cumplen el umbral
def obtenerDirectorios(registros, umbral): def obtenerDirectorios(registros, umbral):
directorios = [] directorios = []
contadores = [] contadores = []
sesiones = []
# Obtenemos los registros diferentes con sus contadores # Obtenemos los registros diferentes con sus contadores
for r in registros: for r in registros:
if r.url not in directorios: if r.url not in directorios:
directorios.append(r.url) directorios.append(r.url)
contadores.append(1) contadores.append(1)
sesiones.append(r.idSesion)
else: else:
pos = directorios.index(r.url) pos = directorios.index(r.url)
contadores[pos] += 1 contadores[pos] += 1
directorios, contadores = quitarExcluidos(directorios, contadores, umbral) directorios, contadores, sesiones = quitarExcluidos(directorios, contadores, sesiones, umbral)
return directorios, contadores return directorios, contadores, sesiones
# Se quitan los directorios que no vamos a incluir # Se quitan los directorios que no vamos a incluir
def quitarExcluidos(directorios, contadores, umbral): def quitarExcluidos(directorios, contadores, sesiones, umbral):
excluidos = [] excluidos = []
# Indicamos aquellas que no superan el umbral # Indicamos aquellas que no superan el umbral
...@@ -41,13 +53,28 @@ def quitarExcluidos(directorios, contadores, umbral): ...@@ -41,13 +53,28 @@ def quitarExcluidos(directorios, contadores, umbral):
for i in excluidos: for i in excluidos:
directorios.pop(i - sacados) directorios.pop(i - sacados)
contadores.pop(i - sacados) contadores.pop(i - sacados)
sesiones.pop(i - sacados)
sacados += 1 sacados += 1
return directorios, contadores return directorios, contadores, sesiones
# Se obtiene la cesta transformada final # Se obtiene la cesta transformada final con toda la informacion de cada pagina
def obtenerCestaTransformada(registros, directorios): def obtenerCestaTransformada(directorios, sesiones):
tam = len(directorios)
cesta = [] cesta = []
print("Bro")
# Se generan todas las variables
for i in range(tam):
cesta.append(Cesta(directorios, sesiones, tam, i))
# Se reducen a una por sesion
sesionesUsadas = []
for c in cesta:
if c.sesion not in sesionesUsadas: # Si no ha sido escogida todavía, se usa
sesionesUsadas.append(c.sesion)
else: # Si no se elimina
cesta.remove(c)
return cesta return cesta
...@@ -11,9 +11,9 @@ FACTOR_UMBRAL = 0.5 ...@@ -11,9 +11,9 @@ FACTOR_UMBRAL = 0.5
def printRegistro(registros): def printRegistro(registros):
print("Resultados: ") print("RESULTADOS: ")
informe = ( informe = (
" - Registro {} -\nHost Remoto: {}\nFecha: {}\nMetodo de Petición: {}\nURL: {}\nProtocolo: {}\nStatus Code: {}\n" " - REGISTRO {} -\nHost Remoto: {}\nFecha: {}\nMetodo de Petición: {}\nURL: {}\nProtocolo: {}\nStatus Code: {}\n"
"Volumen de Transferencia: {}Marca de Tiempo: {}\nId Usuario: {}\nId Sesion: {}\n" "Volumen de Transferencia: {}Marca de Tiempo: {}\nId Usuario: {}\nId Sesion: {}\n"
) )
...@@ -26,11 +26,9 @@ def printRegistro(registros): ...@@ -26,11 +26,9 @@ def printRegistro(registros):
def printDirectorios(d, cont, num_dir, num_reg): def printDirectorios(d, cont, num_dir, num_reg):
print("Directorios más solicitados: ") print("DIRECTORIOS MÁS SOLICITADOS (<0.5%): ")
barra = "=" barra = "="
informe = ( informe = (" - VALOR {} -\nDirectorio: {}\nP(%): {}\nCuenta: {}\nProporción: [{}]\n")
" - VALOR {} -\nDirectorio: {}\nP(%): {}\n Cuenta: {}\nProporción: [{}]\n"
)
# Se imprime el total de directorios incluidos # Se imprime el total de directorios incluidos
total = 0 total = 0
...@@ -46,7 +44,15 @@ def printDirectorios(d, cont, num_dir, num_reg): ...@@ -46,7 +44,15 @@ def printDirectorios(d, cont, num_dir, num_reg):
print(informe.format(i + 1, d[i], '%.2f' % (c * 100 / num_reg), c, barra)) print(informe.format(i + 1, d[i], '%.2f' % (c * 100 / num_reg), c, barra))
def printCestaTransformada(c): def printCestaTransformada(cesta):
print("CESTA TRANSFORMADA: ")
informe = ("Sesion: {}\nPagina: {}\n")
flags = ("{}: {}")
for c in cesta:
print(informe.format(c.sesion, c.pagina))
for i in range(len(c.directorios)):
print(flags.format(c.directorios[i], c.flags[i]))
return return
...@@ -57,10 +63,10 @@ printRegistro(r) ...@@ -57,10 +63,10 @@ printRegistro(r)
# Se obtienen los directorios con contadores y la cesta # Se obtienen los directorios con contadores y la cesta
umbral = int(num_reg * FACTOR_UMBRAL / 100) umbral = int(num_reg * FACTOR_UMBRAL / 100)
d, cont = obtenerDirectorios(r, umbral) d, cont, ses = obtenerDirectorios(r, umbral)
num_dir = len(d) num_dir = len(d)
printDirectorios(d, cont, num_dir, num_reg) printDirectorios(d, cont, num_dir, num_reg)
# Obtiene cesta transformada y la muestra # Obtiene cesta transformada y la muestra
cesta = obtenerCestaTransformada(r, d) cesta = obtenerCestaTransformada(d, ses)
printCestaTransformada(cesta) printCestaTransformada(cesta)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment