Пример #1
0
def main(alpha):
    #factorizamos la matriz de entrenamiento
    nmf = nimfa.Nmf(V_entrenamiento, max_iter=2000, rank=alpha, update='euclidean', objective='fro')
    nmf_fit = nmf()

    #extraemos la matriz de bases y caractreristicas
    W_entrenamiento = np.matrix(nmf_fit.basis())
    H_entrenamiento = np.matrix(nmf_fit.coef())
    print 'se factorizo la primer matriz' 

    #Obtenemos la matriz V de prueda
    try:
        V_prueba = np.loadtxt('matriz_prueba.txt')
    except IOError:
        #crear desde cero la matriz V
        creacion.crearMatriz('prueba')
        V_prueba = np.loadtxt('matriz_prueba.txt')

    #sacando la matriz de caractreristicas para el conjunto a clasificar
    print 'Obteniendo la segunda matriz de caracteristicas del conjunto a clasificar...'
    a = time.time()
    H_prueba = np.matrix(np.linalg.inv(W_entrenamiento.transpose()*W_entrenamiento)*(W_entrenamiento.transpose()*V_prueba))
    b = time.time()
    print 'se obtiene la otra matriz de caracteristicas en ', b-a

    H_lista_prueba, H_lista_entrenamiento = clasificacion_nmfknn(H_prueba, H_entrenamiento)
    categorias = ['biologia', 'computo','matematicas','medicina', 'derecho','geologia','quimica','astronomia']

    pasO = [[i for j in range(15)] for i in categorias]
    etiquetas_entrenamiento = []
    for i in range(len(categorias)):
        etiquetas_entrenamiento.extend(pasO[i])
        
    pasO = [[i for j in range(3)] for i in categorias]
    etiquetas_comparar = []
    for i in range(len(categorias)):
        etiquetas_comparar.extend(pasO[i])
        
    numeroClasificar = 24
    print 'Comenzando a etiquetar...'
    a = time.time()
    etiquetas_euclidianas = aux.comparar(H_lista_prueba , H_lista_entrenamiento, etiquetas_entrenamiento, compa='euc')
    etiquetas_manhattan = aux.comparar(H_lista_prueba , H_lista_entrenamiento, etiquetas_entrenamiento, compa='man')
    etiquetas_minkowski = aux.comparar(H_lista_prueba , H_lista_entrenamiento, etiquetas_entrenamiento, compa='min')
    etiquetas_maxdist = aux.comparar(H_lista_prueba , H_lista_entrenamiento, etiquetas_entrenamiento, compa='max')
    b = time.time()
    promedio_e = aux.sacar_mal(etiquetas_euclidianas, etiquetas_comparar) * 100.0 / numeroClasificar
    promedio_man = aux.sacar_mal(etiquetas_manhattan, etiquetas_comparar) * 100.0 / numeroClasificar
    promedio_min = aux.sacar_mal(etiquetas_minkowski, etiquetas_comparar) * 100.0 / numeroClasificar
    promedio_max = aux.sacar_mal(etiquetas_maxdist, etiquetas_comparar) * 100.0 / numeroClasificar

    print 'con distancia euclidiana hubo un %.3f%s de aciertos' % (promedio_e,'%')
    print 'con distancia manhattan hubo un %.3f%s de aciertos' % (promedio_man,'%')
    print 'con distancia minkowski hubo un %.3f%s de aciertos' % (promedio_min,'%')
    print 'con distancia maxDist hubo un %.3f%s de aciertos' % (promedio_max,'%')
    print b-a
Пример #2
0
def clasificacion_knn(H_lista_prueba, H_entrenamiento):
    H_lista_prueba = aux.hacer_matriz_lista(V_prueba)
    H_lista_entrenamiento = aux.hacer_matriz_lista(V_entrenamiento)
    return H_lista_prueba, H_lista_entrenamiento

def clasificacion_nmfknn(H_prueba, H_entrenamiento):
    H_lista_prueba = aux.hacer_matriz_lista(H_prueba)
    H_lista_entrenamiento = aux.hacer_matriz_lista(H_entrenamiento)
    return H_lista_prueba, H_lista_entrenamiento

#leemos el documento que contiene la matriz
try:
    V_entrenamiento = np.loadtxt('matriz_entrenamiento.txt')
except IOError:
    #crear desde cero la matriz V
    creacion.crearMatriz('entrenamiento')
    V_entrenamiento = np.loadtxt('matriz_entrenamiento.txt')
    
def main(alpha):
    #factorizamos la matriz de entrenamiento
    nmf = nimfa.Nmf(V_entrenamiento, max_iter=2000, rank=alpha, update='euclidean', objective='fro')
    nmf_fit = nmf()

    #extraemos la matriz de bases y caractreristicas
    W_entrenamiento = np.matrix(nmf_fit.basis())
    H_entrenamiento = np.matrix(nmf_fit.coef())
    print 'se factorizo la primer matriz' 

    #Obtenemos la matriz V de prueda
    try:
        V_prueba = np.loadtxt('matriz_prueba.txt')