Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Miguel Ángel González Gallardo
/
AnalizadorLogs
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
e2822b53
authored
Mar 25, 2021
by
Miguel Ángel González Gallardo
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Analisis tiempo mediao pagina hecho
parent
be1b401e
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
115 additions
and
56 deletions
codigo/AnalisisDuracionSesion.py
codigo/AnalisisPaginasVisitadas.py
codigo/AnalisisTMedioPagina.py
codigo/Cesta.py
codigo/Filtros.py
codigo/Gestor.py
codigo/AnalisisDuracionSesion.py
View file @
e2822b53
...
...
@@ -59,11 +59,11 @@ def estadisticasDuracionSesiones(registros):
if
duraciones
[
j
]
==
i
:
histograma
[
i
]
+=
1
# Obtengo la moda (Posicion del valor mas alto del histograma)
malto
=
-
1
moda
=
0
malto
=
-
1
moda
=
0
for
i
in
range
(
len
(
histograma
)):
if
i
!=
0
and
malto
<
histograma
[
i
]:
malto
=
histograma
[
i
]
moda
=
i
if
i
!=
0
and
malto
<
histograma
[
i
]:
malto
=
histograma
[
i
]
moda
=
i
# Devuelvo todos los parametros
return
histograma
,
media
,
moda
,
maxDur
,
minDur
,
desviacionTipica
codigo/AnalisisPaginasVisitadas.py
0 → 100644
View file @
e2822b53
import
math
from
Filtros
import
getDistintasPaginas
def
getEstadisticasPaginasVisitadas
(
registros
):
# Cojo la lista de las distintas paginas exitentes
paginas
=
getDistintasPaginas
(
registros
)
# Creo lista con el numero de ocurrencias para cada pagina (coincidiendo los indices)
ocurrencias
=
[]
max
=
-
1
min
=
1000000000
media
=
0
for
p
in
paginas
:
sesiones
=
set
()
for
r
in
registros
:
if
r
.
url
==
p
:
sesiones
.
add
(
r
.
idSesion
)
cantidad
=
len
(
sesiones
)
ocurrencias
.
append
(
cantidad
)
if
max
<
cantidad
:
max
=
cantidad
if
min
>
cantidad
:
min
=
cantidad
media
+=
cantidad
media
/=
len
(
paginas
)
# Calculo la desviacion tipica
suma
=
0
for
o
in
ocurrencias
:
suma
+=
((
o
-
media
)
**
2
)
desviacionTipica
=
math
.
sqrt
(
suma
/
len
(
paginas
))
# Creo el histograma
histograma
=
[]
for
i
in
range
(
len
(
ocurrencias
)):
suma
=
0
for
o
in
ocurrencias
:
if
o
==
i
:
suma
+=
1
histograma
.
append
(
suma
)
# Obtengo la moda
moda
=
-
1
for
i
in
range
(
len
(
ocurrencias
)):
if
ocurrencias
[
i
]
>
moda
:
moda
=
ocurrencias
[
i
]
return
histograma
,
max
,
min
,
moda
,
media
,
desviacionTipica
codigo/AnalisisTMedioPagina.py
View file @
e2822b53
...
...
@@ -3,38 +3,37 @@ from Filtros import getDistintasSesiones
from
Filtros
import
getTiempoEnPagina
from
Filtros
import
getDistintasPaginas
def
analisisTiempoMedioPorPagina
(
registros
):
#Ordeno los registros por sesion
reg
=
ordenaRegistros
(
registros
,
1800
)
#Obtengo los id de las sesiones existentes
idsExistentes
=
getDistintasSesiones
(
reg
)
#Obtengo las distintas paginas existentes
paginas
=
getDistintasPaginas
()
#Creo una lista para guardar el tiempo medio que han pasado los usuarios en las paginas
tiempos
=
[]
#
El indice del vector tiempos es igual al indice vector paginas
max
=
-
1
#
Ordeno los registros por sesion
reg
=
ordenaRegistros
(
registros
,
1800
)
#
Obtengo los id de las sesiones existentes
idsExistentes
=
getDistintasSesiones
(
reg
)
#
Obtengo las distintas paginas existentes
paginas
=
getDistintasPaginas
()
#
Creo una lista para guardar el tiempo medio que han pasado los usuarios en las paginas
tiempos
=
[]
#
El indice del vector tiempos es igual al indice vector paginas
max
=
-
1
for
pag
in
paginas
:
suma
=
0
c
=
0
suma
=
0
c
=
0
for
sesion
in
idsExistentes
:
suma
+=
getTiempoEnPagina
(
sesion
,
pag
,
reg
)
c
+=
1
if
c
!=
0
:
t
=
round
(
suma
/
c
,
2
)
suma
+=
getTiempoEnPagina
(
sesion
,
pag
,
reg
)
c
+=
1
if
c
!=
0
:
t
=
round
(
suma
/
c
,
2
)
tiempos
.
append
(
t
)
if
t
>
max
:
max
=
t
max
=
t
else
:
tiempos
.
append
(
0
)
#Creo el histograma
histograma
=
[]
max
=
int
(
max
)
+
2
#
Creo el histograma
histograma
=
[]
max
=
int
(
max
)
+
2
for
i
in
range
(
max
):
histograma
.
append
(
0
)
#Relleno el histograma
#
Relleno el histograma
for
t
in
tiempos
:
histograma
[
int
(
round
(
t
,
0
))]
+=
1
return
paginas
,
tiempos
,
histograma
histograma
[
int
(
round
(
t
,
0
))]
+=
1
return
paginas
,
tiempos
,
histograma
codigo/Cesta.py
View file @
e2822b53
...
...
@@ -11,7 +11,8 @@ class Cesta:
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
if
sesiones
[
i
]
==
self
.
sesion
:
# Hay que obtener distribuciones de frecuencia aquí o no ############################3
self
.
flags
.
append
(
True
)
else
:
self
.
flags
.
append
(
False
)
...
...
codigo/Filtros.py
View file @
e2822b53
...
...
@@ -5,49 +5,53 @@ def ordenarPorSesion(registros):
registros
[
i
],
registros
[
j
]
=
registros
[
j
],
registros
[
i
]
return
registros
def
getDistintasSesiones
(
registros
):
s
=
set
()
s
=
set
()
for
r
in
registros
:
s
.
add
(
r
.
idSesion
)
return
list
(
s
)
def
getDistintasPaginas
(
registros
):
paginas
=
set
()
for
r
in
registros
:
paginas
.
add
(
r
.
url
)
paginas
=
list
(
paginas
)
#Pasado el id de sesion y la pagina, se suma el tiempo que ha pasado el usuario desde que accedio a la pagina hasta que
#cambio de pagina
def
getTiempoEnPagina
(
id
,
pagina
,
registros
):
s
=
0
#<-- Suma de los tiempos pasados entre paginas
for
i
in
range
(
len
(
registros
)
-
1
):
if
registros
[
i
]
.
url
==
pagina
and
registros
[
i
]
.
idSesion
==
id
and
registros
[
i
+
1
]
.
idSesion
==
id
:
s
+=
abs
(
registros
[
i
+
1
]
.
marcaTiempo
-
registros
[
i
]
.
marcaTiempo
)
return
list
(
paginas
)
# Pasado el id de sesion y la pagina, se suma el tiempo que ha pasado el usuario desde que accedio a la pagina hasta que
# cambio de pagina
def
getTiempoEnPagina
(
id
,
pagina
,
registros
):
s
=
0
# <-- Suma de los tiempos pasados entre paginas
for
i
in
range
(
len
(
registros
)
-
1
):
if
registros
[
i
]
.
url
==
pagina
and
registros
[
i
]
.
idSesion
==
id
and
registros
[
i
+
1
]
.
idSesion
==
id
:
s
+=
abs
(
registros
[
i
+
1
]
.
marcaTiempo
-
registros
[
i
]
.
marcaTiempo
)
return
s
#Elimina las sesiones que han invertido menos de 0,5 segundos en el acceso
# Elimina las sesiones que han invertido menos de 0,5 segundos en el acceso
def
eliminarComportamientoAutomatico
(
registros
):
#Ordeno por sesion
reg
=
ordenarPorSesion
(
registros
)
sesionActual
=
reg
[
0
]
.
idSesion
iMin
=
-
1
iMax
=
-
1
idSesionesNoValidas
=
set
()
#
Ordeno por sesion
reg
=
ordenarPorSesion
(
registros
)
sesionActual
=
reg
[
0
]
.
idSesion
iMin
=
-
1
iMax
=
-
1
idSesionesNoValidas
=
set
()
for
i
in
range
(
len
(
reg
)):
if
reg
[
i
]
.
idSesion
==
sesionActual
:
if
iMin
==
-
1
:
iMin
=
i
if
reg
[
i
]
.
idSesion
==
sesionActual
:
if
iMin
==
-
1
:
iMin
=
i
else
:
iMax
=
i
iMax
=
i
else
:
if
iMin
!=
iMax
:
#
<--- Si ha visitado mas de dos paginas en la sesion miro el tiempo
tiempo
=
abs
(
reg
[
iMax
]
.
marcaTiempo
-
reg
[
iMin
]
.
marcaTiempo
)
if
iMin
!=
iMax
:
#
<--- Si ha visitado mas de dos paginas en la sesion miro el tiempo
tiempo
=
abs
(
reg
[
iMax
]
.
marcaTiempo
-
reg
[
iMin
]
.
marcaTiempo
)
if
tiempo
<
0.5
:
idSesionesNoValidas
.
add
(
sesionActual
)
sesionActual
=
reg
[
i
]
.
idSesion
#Me quedo con los registros con ids validos
ret
=
[]
sesionActual
=
reg
[
i
]
.
idSesion
#
Me quedo con los registros con ids validos
ret
=
[]
for
r
in
reg
:
if
r
.
idSesion
not
in
idSesionesNoValidas
:
ret
.
append
(
r
)
...
...
codigo/Gestor.py
View file @
e2822b53
...
...
@@ -5,6 +5,7 @@ from Cesta import obtenerDirectorios
from
Cesta
import
obtenerCestaTransformada
from
Filtros
import
eliminarComportamientoAutomatico
from
AnalisisTMedioPagina
import
analisisTiempoMedioPorPagina
from
AnalisisPaginasVisitadas
import
getEstadisticasPaginasVisitadas
RUTA_ARCHIVO
=
"../access_log_Aug95_reducido"
E_SPIDERING
=
True
...
...
@@ -77,3 +78,12 @@ printDirectorios(d, cont, num_dir, num_reg)
cesta = obtenerCestaTransformada(d, ses)
printCestaTransformada(cesta)
'''
histograma
,
max
,
min
,
moda
,
media
,
desviacionTipica
=
getEstadisticasPaginasVisitadas
(
r
)
print
(
"Max:"
+
str
(
max
)
+
"
\n
"
)
print
(
"Min:"
+
str
(
min
)
+
"
\n
"
)
print
(
"Moda:"
+
str
(
moda
)
+
"
\n
"
)
print
(
"Media:"
+
str
(
media
)
+
"
\n
"
)
print
(
"DV:"
+
str
(
desviacionTipica
)
+
"
\n
"
)
print
(
histograma
)
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment