# Funcion para saber que es SPAM (en este caso es FINANZAS)
def probabilidadSpam(palabra,clasificacion,clasificacion2):
spam = len(clasificacion) # Calculamos la cantidad de palabras de la tabla
probabilidad = clasificacion.count(palabra) + 1 # Obtenemos el numero de las palabras + 1 por laplace
conjunto = list(set(clasificacion)) # Obtenemos el conjunto sin valores repetidos
conjunto.extend(list(set(clasificacion2))) # Agregamos el conjunto de la otra clasificacion
conjunto = list(set(conjunto)) # Eliminamos elementos repetidos
total = spam + len(conjunto) # Obtenemos la cantidad de palabras total
retorno = (probabilidad)/total # Calculamos el valor de que sea SPAM
return retorno
# Funcion para caltular la probabilidad total
def probabilidadTotal(clasificacion,clasificacion2):
return len(clasificacion)/(len(clasificacion)+len(clasificacion2))
# Funcion para calcular la probabilidad por palabra
def probabilidadTotalPalabra(probabilidadV,probabilidadF):
return (probabilidadV)/(probabilidadV+probabilidadF)
SPAM = ["offer","is","secret","click","secret","link","secret","sports","link"]
HAM = ["play","sports","today","went","play","sports","secret","sports","event","sports","is","today","sports","cost","money"]
mensaje = ["secret", "is", "secret"]
proba = proba2 = 1.0
for palabra in mensaje: # Probabilidad de que la noticia sea FINANZAS
proba *= probabilidadSpam(palabra,SPAM,HAM)
for palabra in mensaje: # Probabilidad de que no sea FINANZAS
proba2 *= probabilidadSpam(palabra,HAM,SPAM)
for palabra in mensaje: # Agregamos a la tabla SEGURIDAD la palabra (si no existe)
if palabra not in HAM:
HAM.append(palabra)
for palabra in mensaje: # Agregamos a la tabla FINANZAS la palabra (si no existe)
if palabra not in SPAM:
SPAM.append(palabra)
proba *= probabilidadTotal(SPAM,HAM) # Calculamos la probabilidad con los elementos agregados
proba2 *= probabilidadTotal(HAM,SPAM) # Calculamos la probabilidad con los elementos agregados
total = probabilidadTotalPalabra(proba,proba2) # Calculo de la probabilidad total
print ("El mensaje: \"",end=" ")
for m in mensaje:
print(m,end=" ")
print ("\" es: ",end=" ")
if total > 0.5:
print ("SPAM")
else:
print ("HAM")
Be the first to comment
You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.