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