Пример #1
0
def main():

    print("\nPrueba con la base de datos de DNA sin ruido")
    print("----------------------------------------------")

    datos, clases = carga_archivo("dna.data")
    clasificador = nb.NaiveBayes()

    clasificador.aprende(datos, clases)
    clases_estimadas = clasificador.reconoce(datos)
    error = error_clasif(clases, clases_estimadas)
    print("Error de estimación en los mismos datos: " +
          str(error*100)+" %")

    d_test, c_test = carga_archivo("dna.test")
    c_e_test = clasificador.reconoce(d_test)
    e_test = error_clasif(c_test, c_e_test)
    print("Error de estimación en los datos de prueba: " +
          str(e_test*100)+" %\n")

    print("\nPrueba con la base de datos de DNA con ruido")
    print("----------------------------------------------")

    datos, clases = carga_archivo("dna_noise.data")
    clasificador_ruido = nb.NaiveBayes()

    clasificador_ruido.aprende(datos, clases)
    clases_estimadas = clasificador_ruido.reconoce(datos)
    error = error_clasif(clases, clases_estimadas)
    print("Error de estimación en los mismos datos: "+str(error*100)+"%")

    d_test, c_test = carga_archivo("dna_noise.test")
    c_e_test = clasificador_ruido.reconoce(d_test)
    e_test = error_clasif(c_test, c_e_test)
    print("Error de estimación en los datos de prueba: "+str(e_test*100)+"%\n")
Пример #2
0
def spam_filter():
    """
    Filtro spam a desarrollar para reconocer si un correo es spam o no.

    Para obtener los datos de aprendizaje se puede utilizar
        datos, clases = carga_datos('mails.data','mails.class')

    Mientras que para obtener los datos de prueba se puede utilizar
        datos, clases = carga_datos('mails_test.data','mails_test.class')

    En la funcion ejemplo_datos viene una manera de mostrar los resultados
    mostrando el valor de las palabras.

    La función debe de devolver el error de predicción tanto con los datos
    de entrenamiento como con los datos de prueba

    """
    error_entrenamiento = 1.0
    error_prueba = 1.0

    #  ---------------------------------------------------
    #   agregar aqui el código
    #  ---------------------------------------------------
    datos, clases = carga_datos('mails.data', 'mails.class')

    clasificador_spam = nb.NaiveBayes()
    clasificador_spam.aprende(datos, clases)
    clases_estimadas = clasificador_spam.reconoce(datos)
    error_entrenamiento = error_clasif(clases, clases_estimadas)

    datos, clases = carga_datos('mails_test.data', 'mails_test.class')
    clases_estimadas = clasificador_spam.reconoce(datos)
    error_prueba = error_clasif(clases, clases_estimadas)

    return error_entrenamiento, error_prueba
Пример #3
0
def spam_filter():
    """
    Filtro spam a desarrollar para reconocer si un correo es spam o no.

    Para obtener los datos de aprendizaje se puede utilizar
        datos, clases = carga_datos('mails.data','mails.class')

    Mientras que para obtener los datos de prueba se puede utilizar
        datos, clases = carga_datos('mails_test.data','mails_test.class')

    En la funcion ejemplo_datos viene una manera de mostrar los resultados
    mostrando el valor de las palabras.

    La función debe de devolver el error de predicción tanto con los datos
    de entrenamiento como con los datos de prueba

    """
    #CODIGO
    #  ---------------------------------------------------
    datos, clases = carga_datos('mails.data', 'mails.class')
    datosPrueba, clasesPrueba = carga_datos('mails_test.data',
                                            'mails_test.class')
    clasificador = nb.NaiveBayes([0, 1])  #no o si
    clasificador.aprende(datos, clases)
    #ENTRENAMIENTO
    clasesEstimadas = clasificador.reconoce(datos)
    errorEntrenamiento = error_clasif(clases, clasesEstimadas)
    #PRUEBA
    clasesEstimadas = clasificador.reconoce(datosPrueba)
    errorPrueba = error_clasif(clasesPrueba, clasesEstimadas)
    #  ---------------------------------------------------
    return errorEntrenamiento * 100, errorPrueba * 100
Пример #4
0
def spam_filter():
    """
    Filtro spam a desarrollar para reconocer si un correo es spam o no.

    Para obtener los datos de aprendizaje se puede utilizar
        datos, clases = carga_datos('mails.data','mails.class')

    Mientras que para obtener los datos de prueba se puede utilizar
        datos, clases = carga_datos('mails_test.data','mails_test.class')

    En la función ejemplo_datos viene una manera de mostrar los resultados
    mostrando el valor de las palabras.

    La función debe de devolver el error de predicción tanto con los datos
    de entrenamiento como con los datos de prueba
    """
    #  ---------------------------------------------------
    #   Agregar aquí el código.
    #  ---------------------------------------------------
    datos, clases = carga_datos('mails.data', 'mails.class')

    # Entrenamos a la red bayesiana.
    filtro = nb.NaiveBayes([0, 1])  # No es spam, o si lo es.
    filtro.aprende(datos, clases)

    # Probamos con los datos de entrenamiento.
    c_e_entrenamiento = filtro.reconoce(datos)
    error_entrenamiento = error_clasif(clases, c_e_entrenamiento)

    # Probamos con los datos de prueba al mismo filtro.
    datos_prueba, clases_prueba = carga_datos('mails_test.data',
                                              'mails_test.class')
    c_e_prueba = filtro.reconoce(datos_prueba)
    error_prueba = error_clasif(clases_prueba, c_e_prueba)

    return error_entrenamiento * 100, error_prueba * 100
Пример #5
0
    x = array(x)
    y = array(y)
    m = x.shape[0]
    randind = random.permutation(m)
    x = x[randind]
    y = y[randind]

    print 'apriori is finding connection...'
#    ap = apriori.Apriori(map(set, x[y=='World News']), 0.04, 0.6)
    ap = apriori.Apriori(map(set, x), 0.04, 0.5)
    pprint(ap.freq_set()[0])
    ap.pprint_rules()


    training_rate = 0.01
    split_ind = m * training_rate
    train_x = x[:split_ind]
    train_y = y[:split_ind]
    test_x = x[split_ind:]
    test_y = y[split_ind:]    

    print 'training...'
    nb_cl = nb.NaiveBayes(list(train_x), list(train_y))
    print 'predicting...'
    correct = 0
    for ele, ans in zip(test_x, test_y):
        pre, pro = nb_cl.classify(ele)
        #print ele, pre, ans
        correct += (ans == pre)        
    print 'correct: %d/%d = %lf' % (correct, len(test_y), correct*1.0/len(test_y))