Example #1
0
def programa():
    #obtengo los valores
    train_X, train_Y, val_X, val_Y, distancias, min_max = Ar.lectura_dataset()

    #creo los datasets
    train_set = Data(train_X, train_Y)
    val_set = Data(val_X, val_Y)

    #definimos capas
    capas1 = [train_set.n, 15, 10, 5, 1]

    poblacion = crear_poblacion(train_set, val_set, capas1)
    loop = True
    iteraciones = 1

    while loop:
        mejoresPadres = seleccionTorneo(poblacion)
        poblacion = cruzarPadres(mejoresPadres, train_set, val_set, capas1)
        if iteraciones == 3:
            loop = False
        iteraciones = iteraciones + 1

    mejor = sorted(poblacion, key=lambda x: x.fitness, reverse=True)
    print("iteraciones: ", iteraciones)
    return mejor[0], train_set, val_set, capas1, distancias, min_max
Example #2
0
def comenzarGenetico(iteraciones, ruta, resArchivo, numPoblacion):
    # Lectura archivo de Entrenamiento y Validacion
    train_X, train_Y, val_X, val_Y = File.cargarDatos(ruta)

    # ====== DEFINICION DE RED NEURONAL ======
    # Definir los conjuntos de datos
    train_set = Data(train_X, train_Y)
    val_set = Data(val_X, val_Y)

    # Se define las dimensiones de las capas
    #capas = [train_set.n, 5, 5, 4, 4, 3, 1]
    capas = [train_set.n, 7, 7, 5, 5, 3, 1]

    #  ==== Lectura archivo CSV Hiperparametros ====
    entradas_params = {}
    df = pd.read_csv(ruta + "/" + "hiperparams.csv")
    entradas_params["alpha"] = df['alpha'].tolist()
    entradas_params["lambda"] = df["lambda"].tolist()
    entradas_params["max_iteration"] = df["max_iteration"].tolist()
    entradas_params["keep_prob"] = df["keep_prob"].tolist()

    # Inicializacion de Algoritmo Genetico
    print("Ejecutando Algoritmo Genetico ...")
    genetico = Genetico(iteraciones, entradas_params, numPoblacion,
                        len(entradas_params["alpha"]), train_set, val_set,
                        capas, 6)
    hiper_params = genetico.ejecutar()

    return {
        "params": hiper_params,
        "train_set": train_set,
        "val_set": val_set,
        "capas": capas
    }
Example #3
0
def principal():
    datos_entrenamiento, respuesta_entrenamiento, datos_prueba, respuesta_prueba, maxEdad, maxYear, maxDist, minEdad, minYear, minDist, dep_list= leerData()

    train_set = Data(datos_entrenamiento, respuesta_entrenamiento)
    test_set = Data(datos_prueba, respuesta_prueba)

    capas = [train_set.n, 12, 10, 8, 6, 4, 2, 1]

    modelo = NN_Model(train_set, capas, alpha=0.09, iterations=55000, lambd=1.5, keep_prob=1)
    
    now = datetime.now()
    fecha_hora = now.strftime("%d/%m/%Y %H:%M:%S")
    print(fecha_hora)

    modelo.training(True)
    now = datetime.now()
    fecha_hora = now.strftime("%d/%m/%Y %H:%M:%S")
    print(fecha_hora)
    print("alpa", modelo.alpha, "lam", modelo.lambd, "kp", modelo.kp, "it", modelo.max_iteration, capas)
    #Plotter.show_Model([modelo])

    print('Entrenamiento Modelo')
    modelo.predict(train_set)
    print('Validacion Modelo')
    modelo.predict(test_set)
    save_object(modelo, "Guardar/Modelo01.pkl")
Example #4
0
def predecir():
    data = request.get_json()
    genero = int(data["genero"])
    edad = float(data["edad"])
    year = float(data["year"])
    distancia = float(data["distancia"])

    print(genero, edad, year, distancia)
    mejor = cargar("Guardar/Modelo01.pkl")
    departamentos = cargar("Guardar/Datos.pkl")
    esc_edad = (edad - departamentos.minEdad) / (departamentos.maxEdad -
                                                 departamentos.minEdad)
    esc_year = (year - departamentos.minYear) / (departamentos.maxYear -
                                                 departamentos.minYear)
    esc_dist = (distancia - departamentos.minDist) / (departamentos.maxDist -
                                                      departamentos.minDist)
    print(genero, esc_edad, esc_year, esc_dist)
    # [Genereo, Edad, Año, Distancia]
    valor = [genero, esc_edad, esc_year, esc_dist]
    datos_arr = np.asarray([valor])
    resp_arr = np.asarray([[0]])
    datos_entrenamiento = datos_arr.T
    respuesta_entrenamiento = resp_arr.T
    print(datos_arr.shape)
    print(datos_entrenamiento.shape)
    print(resp_arr.shape)
    print(respuesta_entrenamiento.shape)
    test_set = Data(datos_entrenamiento, respuesta_entrenamiento)
    val = predecirModelo(mejor, test_set)
    resp = "Activo" if val == 1 else "Traslado"
    return jsonify(depa=resp)
    def predecir(self, genero, edad, inscripcion, departamento, municipio):
        if self.modelo != None:
            genero_res = genero
            edad_res = self.escalarVariable(edad, self.min_edad, self.max_edad)
            inscripcion_res = self.escalarVariable(inscripcion, self.min_anio,
                                                   self.max_anio)
            distancia_res = self.escalarVariable(
                self.getDistancia(departamento, municipio), self.min_dist,
                self.max_dist)
            arreglo_x = np.array([
                np.array(
                    [genero_res, edad_res, inscripcion_res, distancia_res])
            ])
            arreglo_x = arreglo_x.T
            arreglo_y = np.array([[1]])
            arreglo_y = arreglo_y.T

            val_set = Data(arreglo_x, arreglo_y)
            #nNuevo = NN_Model(self.modelo.data, [self.modelo.data.n, 7, 7, 5, 5, 3, 1], alpha=self.modelo.alpha, iterations=self.modelo.max_iteration, lambd=self.modelo.lambd, keep_prob=self.modelo.kp)
            #nNuevo.parametros = self.modelo.parametros
            p = self.modelo.predictNormal(val_set)

            return p

        else:
            print("NO HAY MODELO CARGADO EN LA APLICACION")
        pass
Example #6
0
def principal():
    ganador, train_set, val_set, capas1, distancias, min_max = programa()
    alfa, lamb, ite, keep = get_hyperParams(ganador.constantes[0],
                                            ganador.constantes[1],
                                            ganador.constantes[2],
                                            ganador.constantes[3])
    print("--------------------- SOLUCION ENCONTRADA ---------------------")
    print("Alpha: ", alfa)
    print("Lambda: ", lamb)
    print("Iteraciones: ", ite)
    print("Keep: ", keep)
    print("Fintess: ", ganador.fitness)

    # Se define el modelo
    nn1 = NN_Model(train_set,
                   capas1,
                   alpha=alfa,
                   iterations=ite,
                   lambd=lamb,
                   keep_prob=keep)
    #nn2 = NN_Model(train_set, capas1, alpha=0.01, iterations=50000, lambd=0.7, keep_prob=1)

    # Se entrena el modelo
    nn1.training(False)

    loop = True
    while loop:
        print("1. Predecir ")
        print("2. Salir ")
        seleccion = input("Opcion :")
        if seleccion == "1":
            genero = input("Elija su genero: 1. Masculino, 0.Femenino: ")
            edad = input("Seleccione su edad: ")
            año = input("Su año de inscripcion: ")
            municipio = input("Municipio de residencia: ")

            pre = [
                float(genero),
                escalar_var(edad, min_max[0], min_max[1]),
                escalar_var(año, min_max[2], min_max[3]),
                escalar_var(distancias[municipio], min_max[4], min_max[5])
            ]
            pre = np.array(pre)
            arr_pre = [pre]
            arr_pre = (np.array(arr_pre)).T

            arr_res = np.zeros(1)
            arr_res2 = [arr_res]
            arr_res2 = (np.array(arr_res2)).T

            predict = Data(arr_pre, arr_res2)
            valor = nn1.predic2(predict)
            if int(valor) == 1:
                print("Usted no se trasladara")
            else:
                print("Usted se trasladara")

        else:
            loop = False
Example #7
0
def ejecutar():
    datos_entrenamiento, respuesta_entrenamiento, datos_prueba, respuesta_prueba, maxEdad, maxYear, maxDist, minEdad, minYear, minDist, dep_list = leerData()
    
    datos = Datos( maxEdad, maxYear, maxDist, minEdad, minYear, minDist, dep_list)
    save_object(datos, "Guardar/Datos.pkl")
    train_set = Data(datos_entrenamiento, respuesta_entrenamiento)
    test_set = Data(datos_prueba, respuesta_prueba)

    w = open("bitacora.txt", "a")
    now = datetime.now()
    fecha_hora = now.strftime("%d/%m/%Y %H:%M:%S")
    w.write("    Inicio: "+fecha_hora + "\n")
    w.close()

    generacion = 0
    p = inicializarPoblacion(train_set, test_set)
    print("------------------------- Poblacion Inicial -----------------------")
    imprimirPoblacion(p)
    fin = verificarCriterio(generacion)

    while (not fin):
        padres = seleccionarPadres(p)
        p = emparejar(padres, train_set, test_set)
        generacion += 1
        fin = verificarCriterio(generacion)
        print("---------- Generacion ", generacion, " ------------------ ")

    p = sorted(p, key=lambda item: item.fitness, reverse=True)[:len(p)]
    save_object(p[0], "Guardar/Mejor.pkl")
    save_object(p, "Guardar/PoblacionFinal.pkl")
    imprimirPoblacion(p)

    w = open("bitacora.txt", "a")
    now = datetime.now()
    fecha_hora = now.strftime("%d/%m/%Y %H:%M:%S")
    w.write("    Finalizo: "+fecha_hora + "\n")
    w.close()
Example #8
0
def consultar():
    """
    Predecir con la red neuronal
    """

    if modelo_nn == None:
        inicializarModelo()

    data = [
        0,
        float(request.json['genero']),
        float(request.json['edad']),
        calcularDistancia(str(request.json['departamento']),
                          str(request.json['municipio']), ''),
        float(request.json['anio'])
    ]

    # print('antes')
    # print(data)

    edad = [57.0, 17.0]
    dist = [269.7739244046257, 6.135217051724262]
    anio = [2019.0, 2010.0]

    data = escalarVariables([data], edad, dist, anio)
    # print('desp')
    # print(data)
    # print([[data[0][1]], [data[0][2]], [data[0][3]], [data[0][4]]])
    pred = Data(
        np.asarray([[data[0][1]], [data[0][2]], [data[0][3]], [data[0][4]]]),
        [[1.0]])

    prediccion = modelo_nn.predecir(pred)

    return jsonify(prediccion=prediccion[0][0],
                   mensaje='imagen Analizada!',
                   status=200)
Example #9
0
    [0.1, 0.001, 1000, 1],
    [0.2, 0.3, 1250, 0.95],
    [0.3, 0.5, 2000, 0.90],
    [0.5, 0.005, 1100, 0.85],
    [0.03, 0.015, 1050, 0.83],
    [0.25, 0.152, 2250, 0.70],
    [0.14, 0.001, 2500, 0.75],
    [0.28, 0.0335, 1800, 0.99],
    [0.44, 0.12, 1300, 0.93],
    [0.04, 0, 3000, 0.88],
]

#train_set_x, train_set_y, val_set_x, val_set_y, test_set_x, test_set_y = cargarDatos()
train_set_x, train_set_y, val_set_x, val_set_y = cargarDatos()

train_set = Data(train_set_x, train_set_y)
val_set = Data(val_set_x, val_set_y)
#test_set = Data(test_set_x, test_set_y)

capas = [train_set.n, 15, 10, 7, 1]


@app.route("/consultar", methods=['POST'])
@cross_origin()
def consultar():
    """
    Predecir con la red neuronal
    """

    if modelo_nn == None:
        inicializarModelo()
Example #10
0
    [0.1, 0.001, 1000, 1],
    [0.001, 0.7, 1250, 0.5],
    [0.0001, 0.8, 2000, 0.67],
    [0.0015, 0.005, 500, 0.9],
    [0.002, 0.015, 400, 0.1],
    [0.02, 0.152, 100, 0.55],
    [0.000001, 1, 2500, 0.03],
    [0.005, 0.0335, 1500, 0.98],
    [0.03, 1.12, 800, 0.4],
    [0.0358, 0, 650, 0.564],
]

train_set_x, train_set_y, val_set_x, val_set_y, test_set_x, test_set_y = cargarDatos(
)

train_set = Data(train_set_x, train_set_y)
val_set = Data(val_set_x, val_set_y)
test_set = Data(test_set_x, test_set_y)

capas = [train_set.n, 10, 5, 3, 1]

nn = NN_Model(train_set,
              capas,
              alpha=0.0358,
              lambd=0.152,
              iterations=1500,
              keep_prob=1)
# nn = NN_Model(train_set, capas, alpha=0.001, lambd=0.152, iterations=1500, keep_prob=1)
nn.training(False)
Plotter.show_Model([nn])
Example #11
0
ONLY_SHOW = False

# Cargando conjunto de datos
train_X, train_Y, val_X, val_Y = get_dataFile()

if ONLY_SHOW:
    Plotter.plot_field_data(train_X, train_Y)
    # Plotter.plot_field_data(val_X, val_Y)
    print("Entradas de entrenamiento:", train_X.shape, sep=' ')
    print("Salidas de entrenamiento:", train_Y.shape, sep=' ')
    print("Entradas de validacion:", val_X.shape, sep=' ')
    print("Salidas de validacion:", val_Y.shape, sep=' ')
    exit()

# Definir los conjuntos de datos
train_set = Data(train_X, train_Y)
val_set = Data(val_X, val_Y)

# Se define las dimensiones de las capas
#capas1 = [Cantidad de variables que tiene el problema, capa 1, capa 2, Capa de salida]
#se tendría una red neuronal de 3 capas, la capa de entrada NO se toma en cuenta
# capas1 = [train_set.n, 10, 5, 1]
capas1 = [train_set.n, 15, 10, 5, 1]

# Se define el modelo
nn1 = NN_Model(train_set,
               capas1,
               alpha=0.001,
               iterations=50000,
               lambd=0,
               keep_prob=0.5)