JuanMontesinos commited on
Commit
52f2033
1 Parent(s): 1994ad2

Upload 4 files

Browse files
Files changed (4) hide show
  1. Dockerfile +15 -0
  2. app.py +41 -0
  3. miarbol.pkl +3 -0
  4. requirements.txt +5 -0
Dockerfile ADDED
@@ -0,0 +1,15 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Usa una imagen base de Python
2
+ FROM python:3.9
3
+ # Establece el directorio de trabajo
4
+ WORKDIR /code
5
+
6
+ # Copia los archivos necesarios al contenedor
7
+ COPY ./requirements.txt /code/requirements.txt
8
+ RUN pip install --no-cache-dir -r /code/requirements.txt
9
+
10
+ COPY . .
11
+
12
+ RUN chmod -R 777 /code
13
+
14
+ # Comando para ejecutar la aplicación
15
+ CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
app.py ADDED
@@ -0,0 +1,41 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from sklearn import tree
2
+ from fastapi import FastAPI, HTTPException
3
+ from pydantic import BaseModel
4
+ import numpy as np
5
+ from typing import List
6
+ from joblib import load
7
+
8
+ class InputData(BaseModel):
9
+ data: List[float] # Lista de características numéricas (flotantes)
10
+
11
+
12
+ app = FastAPI()
13
+
14
+ # Función para construir el modelo manualmente
15
+ def build_decision_tree():
16
+
17
+ # Crear el modelo de árbol de decisión
18
+ model = tree.DecisionTreeClassifier(criterion="entropy", max_depth=10)
19
+ model = load(
20
+ "miarbol.pkl"
21
+ )
22
+ return model
23
+
24
+ # Construir el modelo al iniciar la aplicación
25
+ model = build_decision_tree()
26
+
27
+
28
+ # Ruta de predicción
29
+ @app.post("/predict/")
30
+ async def predict(data: InputData):
31
+ print(f"Data: {data}")
32
+ global model
33
+ try:
34
+ # Convertir la lista de entrada a un array de NumPy para la predicción
35
+ input_data = np.array(data.data).reshape(
36
+ 1, -1
37
+ ) # Asumiendo que la entrada debe ser de forma (1, num_features)
38
+ prediction = model.predict(input_data).round()
39
+ return {"prediction": prediction.tolist()}
40
+ except Exception as e:
41
+ raise HTTPException(status_code=500, detail=str(e))
miarbol.pkl ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:ca46bc80488adbe4c924da6d87a33efd73b78855a1f138fa741a7580e6d4c11e
3
+ size 6898
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ scipy
2
+ scikit-learn==1.2.2
3
+ fastapi
4
+ numpy==1.17.3
5
+ pydantic