Exemple #1
0
def ValoracionKNN(nombre_datos,k):
    """
    @brief Función que obtiene la valoración para 5 particiones del conjunto de datos.
    @param nombre_datos Nombre del fichero de datos.
    @param k Número de vecinos a calcular en KNN.
    @return Devuelve un vector con las valoraciones de los vectores de pesos obtenidos por el método KNN con pesos a 1.
    """
    #Inicializa los datos con los del fichero y las particiones
    data = auxiliar.lecturaDatos(nombre_datos)
    particiones = auxiliar.divideDatosFCV(data,5)
    vectores = []
    valoraciones = []
    contador = 0

    #Se toma como vector solución el que tiene todas las posiciones a 1
    w = []
    for i in range(len(data[0])-1):
        w.append(1)
    w=np.array(w)

    #Para cada partición
    for particion in particiones:
        datos_train = []
        for d in data:
            if d not in particion:
                datos_train.append(d)
        comienzo = time.time()

        #Se calcula la valoración del vector de pesos a 1
        tc,tr = Valoracion(np.array([p[:-1] for p in particion]), np.array([t[:-1] for t in datos_train]),k,w,np.array([p[-1] for p in datos_train]), np.array([t[-1] for t in particion]))
        fin = time.time()
        val = [[tc,tr],fin-comienzo]
        valoraciones.append(val)
        contador+=1
    return valoraciones
def ValoracionRelief(nombre_datos,k):
    """
    @brief Función que obtiene la valoración para 5 particiones del conjunto de datos.
    @param nombre_datos Nombre del fichero de datos.
    @param k número de vecinos que se quieren calcular en KNN.
    @return Devuelve un vector con las valoraciones de los vectores de pesos obtenidos por el método relief.
    """
    #Inicializa los datos con los del fichero y las particiones
    data = auxiliar.lecturaDatos(nombre_datos)
    particiones = auxiliar.divideDatosFCV(data,5)
    vectores = []
    valoraciones = []
    contador = 0

    #Para cada partición
    for particion in particiones:
        #print("Completado " + str((contador/len(particiones))*100) + "%\n")
        datos_train = []
        for d in data:
            if d not in particion:
                datos_train.append(d)
        comienzo = time.time()

        #Hallamos el vector de pesos con el algoritmo relief
        v = Relief(datos_train)
        fin = time.time()
        vectores.append(v)

        #Hallamos la valoración del vector de pesos obtenido
        tc,tr = knn.Valoracion(np.array([p[:-1] for p in particion]), np.array([t[:-1] for t in datos_train]),k,v,np.array([p[-1] for p in datos_train]), np.array([t[-1] for t in particion]))
        tr=0
        val = [[tc,tr], fin-comienzo]
        valoraciones.append(val)
        contador+=1
    return valoraciones