-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathgraficas.py
127 lines (100 loc) · 4.66 KB
/
graficas.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import numpy as np
import matplotlib.pyplot as plt
import csv
# Se leen los datos de feature, cada instancia es un diccionario
dict_datos = csv.DictReader(open("datasets/featureVectors.csv", "r"))
# Se leen los datos de los top topics.
dict_datos_top = csv.DictReader(open("datasets/idTuitsWithTopTopics.csv", "r"))
# Se leen los wordsbag.
dict_datos_wordbags = csv.DictReader(open("datasets/topicsWithTopWords.csv", "r"))
# Nombre de los atributos
nombres_atributos = ['tweet_id','hashtags','mentions','uppercase','nonalpha','urls','len','numbers']
# Wordsbag
wordsbag = []
for instancia in dict_datos_wordbags: #Para cada instancia.
wordsbag.append((instancia[' wordsbag']).replace('\'',''))
# Lista con los id para los top topics de cada fuente.
top_topicsL = ['top_topic_1']
nro_atributos = len(nombres_atributos)
nro_wordsbag = len(wordsbag)
"""
#.-----------------------------------------------------------------------------.
# Graficas para los atributos.
# Lista que por cada atributo almacena una lista que contiene el valor de dicho
# atributo para cada instancia
vector_atributos = []
count = 0 # Contador de iteraciones
for instancia in dict_datos: #Para cada instancia
vector_atributos += [[]]
for atributo in nombres_atributos: # Para cada atributo de la instancia actual
vector_atributos[count] += [instancia[atributo]]
count += 1
for i in range(nro_atributos):
atributox = nombres_atributos[i] # Atributo del eje x
for j in range(i+1,nro_atributos):
atributoy = nombres_atributos[j] # Atributo del eje y
#plt.figure(atributox + "-" + atributoy) # Nombre de la imagen
plt.title(atributox + "-" + atributoy) # Título de la imagen
plt.xlabel(atributox)
plt.ylabel(atributoy)
plt.plot(vector_atributos[i],vector_atributos[j],'o')
plt.savefig(atributox + "-" + atributoy)
#plt.show()
#.-----------------------------------------------------------------------------.
"""
# Graficas para los top_topics.
vector_topTopics = [[0 for i in range(0, len(wordsbag)) ] for d in range(0, len(top_topicsL))]
vector_clasificacion = [[[0 for j in range(0,2)] for i in range(0, len(wordsbag)) ] for d in range(0, len(top_topicsL))]
total_clasificacion = [0,0] # Almacenará la cantidad de tweets que son spam y cuales no.
datos_topL =list(dict_datos_top) # Lista con los top_topics.
# Calculo de frecuencia de los topicas para cada top topic.
i = 0 # Identificar de la fuente a usar.
for instancia in dict_datos_top: #Para cada instancia.
for atributo in top_topicsL: # Para cada atributo de la instancia actual
vector_topTopics[i][int(instancia[atributo])] += 1
i += 1
i = 0
# Calculo de frecuencias para cada clasificacion de cada topic en cada uno de los top topic.
for instancia in dict_datos: #Para cada instancia.
j = 0
for top_topic in top_topicsL:
#print "Tweet " + str(i) + " en el top topic " + str(j) + " es spam?: " + instancia['spam']
if (instancia['spam'] == 'y'):
vector_clasificacion[j][int(datos_topL[i][top_topic])][0] += 1
total_clasificacion[0] += 1
elif (instancia['spam'] == 'n'):
vector_clasificacion[j][int(datos_topL[i][top_topic])][1] += 1
total_clasificacion[1] += 1
j += 1
i += 1
# Colores para cada barra.
colorsFr = ["#EC644B", "#D2527F", "#663399", "#446CB3", "#2C3E50", "#36D7B7",
"#E9D460", "#F2784B", "#D35400", "#6C7A89"]
# Se dibuja el barchart para cada fuente con su top topic.
x = np.arange(len(wordsbag)) # Wordsbags de los top topics.
"""
# Hago el diagrama de cajas para cada top topic.
for i in range(0, len(top_topicsL)):
barchart = plt.bar(x, vector_topTopics[i], align='center', color=colorsFr)
plt.xticks(x, x) # Para que se pueda ver cada elemento del xaxis.
plt.xlim(-0.5, len(wordsbag)-0.5) # Limite x de la grafica.
plt.xlabel('Id del topic')
plt.ylabel('Frecuencias')
plt.title('Frecuencias de tweets asociado a un topico para el Top topic ' + str(i + 1))
plt.show() # Se plotea.
"""
colorsCls = ["g","r"]
# Hago el diagrama de cajas para cada clasificacion de cada topic en cada top topic.
for i in range(0, len(vector_clasificacion)):
for j in range(0, len(x)):
x_pos = np.arange(len(vector_clasificacion[i][j]))
barchart = plt.bar(x_pos, vector_clasificacion[i][j], align='center', color=colorsCls)
plt.xticks(x_pos, ['Spam','No Spam', 'No clasificado']) # Para que se pueda ver cada elemento del xaxis.
plt.xlim(-0.5, len(x_pos)-0.5) # Limite x de la grafica.
plt.xlabel('Clasificacion')
plt.ylabel('Frecuencias')
plt.title('Frecuencias de tweets asociado al topico ' + str(j) + ' para el Top topic ' + str(i + 1))
plt.show() # Se plotea.
#.-----------------------------------------------------------------------------.