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
Show 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):
...
@@ -59,11 +59,11 @@ def estadisticasDuracionSesiones(registros):
if
duraciones
[
j
]
==
i
:
if
duraciones
[
j
]
==
i
:
histograma
[
i
]
+=
1
histograma
[
i
]
+=
1
# Obtengo la moda (Posicion del valor mas alto del histograma)
# Obtengo la moda (Posicion del valor mas alto del histograma)
malto
=
-
1
malto
=
-
1
moda
=
0
moda
=
0
for
i
in
range
(
len
(
histograma
)):
for
i
in
range
(
len
(
histograma
)):
if
i
!=
0
and
malto
<
histograma
[
i
]:
if
i
!=
0
and
malto
<
histograma
[
i
]:
malto
=
histograma
[
i
]
malto
=
histograma
[
i
]
moda
=
i
moda
=
i
# Devuelvo todos los parametros
# Devuelvo todos los parametros
return
histograma
,
media
,
moda
,
maxDur
,
minDur
,
desviacionTipica
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
...
@@ -3,38 +3,37 @@ from Filtros import getDistintasSesiones
from
Filtros
import
getTiempoEnPagina
from
Filtros
import
getTiempoEnPagina
from
Filtros
import
getDistintasPaginas
from
Filtros
import
getDistintasPaginas
def
analisisTiempoMedioPorPagina
(
registros
):
def
analisisTiempoMedioPorPagina
(
registros
):
#Ordeno los registros por sesion
#
Ordeno los registros por sesion
reg
=
ordenaRegistros
(
registros
,
1800
)
reg
=
ordenaRegistros
(
registros
,
1800
)
#Obtengo los id de las sesiones existentes
#
Obtengo los id de las sesiones existentes
idsExistentes
=
getDistintasSesiones
(
reg
)
idsExistentes
=
getDistintasSesiones
(
reg
)
#Obtengo las distintas paginas existentes
#
Obtengo las distintas paginas existentes
paginas
=
getDistintasPaginas
()
paginas
=
getDistintasPaginas
()
#Creo una lista para guardar el tiempo medio que han pasado los usuarios en las paginas
#
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
tiempos
=
[]
#
El indice del vector tiempos es igual al indice vector paginas
max
=
-
1
max
=
-
1
for
pag
in
paginas
:
for
pag
in
paginas
:
suma
=
0
suma
=
0
c
=
0
c
=
0
for
sesion
in
idsExistentes
:
for
sesion
in
idsExistentes
:
suma
+=
getTiempoEnPagina
(
sesion
,
pag
,
reg
)
suma
+=
getTiempoEnPagina
(
sesion
,
pag
,
reg
)
c
+=
1
c
+=
1
if
c
!=
0
:
if
c
!=
0
:
t
=
round
(
suma
/
c
,
2
)
t
=
round
(
suma
/
c
,
2
)
tiempos
.
append
(
t
)
tiempos
.
append
(
t
)
if
t
>
max
:
if
t
>
max
:
max
=
t
max
=
t
else
:
else
:
tiempos
.
append
(
0
)
tiempos
.
append
(
0
)
#Creo el histograma
#
Creo el histograma
histograma
=
[]
histograma
=
[]
max
=
int
(
max
)
+
2
max
=
int
(
max
)
+
2
for
i
in
range
(
max
):
for
i
in
range
(
max
):
histograma
.
append
(
0
)
histograma
.
append
(
0
)
#Relleno el histograma
#
Relleno el histograma
for
t
in
tiempos
:
for
t
in
tiempos
:
histograma
[
int
(
round
(
t
,
0
))]
+=
1
histograma
[
int
(
round
(
t
,
0
))]
+=
1
return
paginas
,
tiempos
,
histograma
return
paginas
,
tiempos
,
histograma
codigo/Cesta.py
View file @
e2822b53
...
@@ -11,7 +11,8 @@ class Cesta:
...
@@ -11,7 +11,8 @@ class Cesta:
def
obtenerFlags
(
self
,
sesiones
,
tam
):
def
obtenerFlags
(
self
,
sesiones
,
tam
):
# Se rellenan los flags segun si son de la misma sesion o no para cada directorio
# Se rellenan los flags segun si son de la misma sesion o no para cada directorio
for
i
in
range
(
tam
):
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
)
self
.
flags
.
append
(
True
)
else
:
else
:
self
.
flags
.
append
(
False
)
self
.
flags
.
append
(
False
)
...
...
codigo/Filtros.py
View file @
e2822b53
...
@@ -5,49 +5,53 @@ def ordenarPorSesion(registros):
...
@@ -5,49 +5,53 @@ def ordenarPorSesion(registros):
registros
[
i
],
registros
[
j
]
=
registros
[
j
],
registros
[
i
]
registros
[
i
],
registros
[
j
]
=
registros
[
j
],
registros
[
i
]
return
registros
return
registros
def
getDistintasSesiones
(
registros
):
def
getDistintasSesiones
(
registros
):
s
=
set
()
s
=
set
()
for
r
in
registros
:
for
r
in
registros
:
s
.
add
(
r
.
idSesion
)
s
.
add
(
r
.
idSesion
)
return
list
(
s
)
return
list
(
s
)
def
getDistintasPaginas
(
registros
):
def
getDistintasPaginas
(
registros
):
paginas
=
set
()
paginas
=
set
()
for
r
in
registros
:
for
r
in
registros
:
paginas
.
add
(
r
.
url
)
paginas
.
add
(
r
.
url
)
paginas
=
list
(
paginas
)
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
# 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
def
getTiempoEnPagina
(
id
,
pagina
,
registros
):
# cambio de pagina
s
=
0
#<-- Suma de los tiempos pasados entre paginas
def
getTiempoEnPagina
(
id
,
pagina
,
registros
):
for
i
in
range
(
len
(
registros
)
-
1
):
s
=
0
# <-- Suma de los tiempos pasados entre paginas
if
registros
[
i
]
.
url
==
pagina
and
registros
[
i
]
.
idSesion
==
id
and
registros
[
i
+
1
]
.
idSesion
==
id
:
for
i
in
range
(
len
(
registros
)
-
1
):
s
+=
abs
(
registros
[
i
+
1
]
.
marcaTiempo
-
registros
[
i
]
.
marcaTiempo
)
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
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
):
def
eliminarComportamientoAutomatico
(
registros
):
#Ordeno por sesion
#
Ordeno por sesion
reg
=
ordenarPorSesion
(
registros
)
reg
=
ordenarPorSesion
(
registros
)
sesionActual
=
reg
[
0
]
.
idSesion
sesionActual
=
reg
[
0
]
.
idSesion
iMin
=
-
1
iMin
=
-
1
iMax
=
-
1
iMax
=
-
1
idSesionesNoValidas
=
set
()
idSesionesNoValidas
=
set
()
for
i
in
range
(
len
(
reg
)):
for
i
in
range
(
len
(
reg
)):
if
reg
[
i
]
.
idSesion
==
sesionActual
:
if
reg
[
i
]
.
idSesion
==
sesionActual
:
if
iMin
==
-
1
:
if
iMin
==
-
1
:
iMin
=
i
iMin
=
i
else
:
else
:
iMax
=
i
iMax
=
i
else
:
else
:
if
iMin
!=
iMax
:
#
<--- Si ha visitado mas de dos paginas en la sesion miro el tiempo
if
iMin
!=
iMax
:
#
<--- Si ha visitado mas de dos paginas en la sesion miro el tiempo
tiempo
=
abs
(
reg
[
iMax
]
.
marcaTiempo
-
reg
[
iMin
]
.
marcaTiempo
)
tiempo
=
abs
(
reg
[
iMax
]
.
marcaTiempo
-
reg
[
iMin
]
.
marcaTiempo
)
if
tiempo
<
0.5
:
if
tiempo
<
0.5
:
idSesionesNoValidas
.
add
(
sesionActual
)
idSesionesNoValidas
.
add
(
sesionActual
)
sesionActual
=
reg
[
i
]
.
idSesion
sesionActual
=
reg
[
i
]
.
idSesion
#Me quedo con los registros con ids validos
#
Me quedo con los registros con ids validos
ret
=
[]
ret
=
[]
for
r
in
reg
:
for
r
in
reg
:
if
r
.
idSesion
not
in
idSesionesNoValidas
:
if
r
.
idSesion
not
in
idSesionesNoValidas
:
ret
.
append
(
r
)
ret
.
append
(
r
)
...
...
codigo/Gestor.py
View file @
e2822b53
...
@@ -5,6 +5,7 @@ from Cesta import obtenerDirectorios
...
@@ -5,6 +5,7 @@ from Cesta import obtenerDirectorios
from
Cesta
import
obtenerCestaTransformada
from
Cesta
import
obtenerCestaTransformada
from
Filtros
import
eliminarComportamientoAutomatico
from
Filtros
import
eliminarComportamientoAutomatico
from
AnalisisTMedioPagina
import
analisisTiempoMedioPorPagina
from
AnalisisTMedioPagina
import
analisisTiempoMedioPorPagina
from
AnalisisPaginasVisitadas
import
getEstadisticasPaginasVisitadas
RUTA_ARCHIVO
=
"../access_log_Aug95_reducido"
RUTA_ARCHIVO
=
"../access_log_Aug95_reducido"
E_SPIDERING
=
True
E_SPIDERING
=
True
...
@@ -77,3 +78,12 @@ printDirectorios(d, cont, num_dir, num_reg)
...
@@ -77,3 +78,12 @@ printDirectorios(d, cont, num_dir, num_reg)
cesta = obtenerCestaTransformada(d, ses)
cesta = obtenerCestaTransformada(d, ses)
printCestaTransformada(cesta)
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