GianmarcoJTA commited on
Commit
8bf2751
verified
1 Parent(s): 8f327e4

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -29
app.py CHANGED
@@ -1,49 +1,45 @@
1
- from keras.api.models import Sequential
2
- from keras.api.layers import InputLayer, Dense
 
3
  from fastapi import FastAPI, HTTPException
4
  from pydantic import BaseModel
5
  import numpy as np
6
  from typing import List
7
 
8
  class InputData(BaseModel):
9
- data: List[float] # Lista de caracter铆sticas num茅ricas (flotantes)
10
 
11
  app = FastAPI()
12
 
13
- # Funci贸n para construir el modelo manualmente
14
- def build_model():
15
- model = Sequential(
16
- [
17
- InputLayer(
18
- input_shape=(2,), name="dense_2_input"
19
- ), # Ajusta el tama帽o de entrada seg煤n tu modelo
20
- Dense(16, activation="relu", name="dense_2"),
21
- Dense(1, activation="sigmoid", name="dense_3"),
22
- ]
23
- )
24
- model.load_weights(
25
- "model.h5"
26
- ) # Aseg煤rate de que los nombres de las capas coincidan para que los pesos se carguen correctamente
27
- model.compile(
28
- loss="mean_squared_error", optimizer="adam", metrics=["binary_accuracy"]
29
- )
30
- return model
31
-
32
 
33
- model = build_model() # Construir el modelo al iniciar la aplicaci贸n
 
 
 
 
 
 
 
34
 
 
 
35
 
36
  # Ruta de predicci贸n
37
  @app.post("/predict/")
38
  async def predict(data: InputData):
39
- print(f"Data: {data}")
40
- global model
41
  try:
42
- # Convertir la lista de entrada a un array de NumPy para la predicci贸n
43
- input_data = np.array(data.data).reshape(
44
- 1, -1
45
- ) # Asumiendo que la entrada debe ser de forma (1, num_features)
46
  prediction = model.predict(input_data).round()
47
  return {"prediction": prediction.tolist()}
48
  except Exception as e:
49
  raise HTTPException(status_code=500, detail=str(e))
 
 
1
+ import pandas as pd
2
+ from keras.models import Sequential, model_from_json
3
+ from keras.layers import InputLayer, Dense
4
  from fastapi import FastAPI, HTTPException
5
  from pydantic import BaseModel
6
  import numpy as np
7
  from typing import List
8
 
9
  class InputData(BaseModel):
10
+ data: List[float]
11
 
12
  app = FastAPI()
13
 
14
+ # Cargar y procesar datos desde titanic-train.csv
15
+ def load_data():
16
+ try:
17
+ df = pd.read_csv("titanic-train.csv")
18
+ # Ajustar procesamiento de datos seg煤n caracter铆sticas necesarias para el modelo
19
+ # Aqu铆 podr铆as filtrar y escalar las caracter铆sticas
20
+ return df
21
+ except Exception as e:
22
+ raise HTTPException(status_code=500, detail=f"Error cargando los datos: {str(e)}")
 
 
 
 
 
 
 
 
 
 
23
 
24
+ # Cargar el modelo
25
+ def load_model():
26
+ with open("model.json", "r") as json_file:
27
+ model_config = json_file.read()
28
+ model = model_from_json(model_config)
29
+ model.load_weights("model.h5")
30
+ model.compile(loss="mean_squared_error", optimizer="adam", metrics=["binary_accuracy"])
31
+ return model
32
 
33
+ model = load_model()
34
+ data = load_data() # Cargar y almacenar los datos al iniciar la aplicaci贸n
35
 
36
  # Ruta de predicci贸n
37
  @app.post("/predict/")
38
  async def predict(data: InputData):
 
 
39
  try:
40
+ input_data = np.array(data.data).reshape(1, -1)
 
 
 
41
  prediction = model.predict(input_data).round()
42
  return {"prediction": prediction.tolist()}
43
  except Exception as e:
44
  raise HTTPException(status_code=500, detail=str(e))
45
+