omar sayed commited on
Commit
2fa64cf
·
1 Parent(s): 7ed0cfb

Add application file

Browse files
Files changed (3) hide show
  1. Dockerfile +17 -0
  2. app.py +21 -0
  3. requirements.txt +5 -0
Dockerfile ADDED
@@ -0,0 +1,17 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.10
2
+
3
+ # Create working directory
4
+ WORKDIR /app
5
+
6
+ # Copy project files
7
+ COPY . .
8
+
9
+ # Install dependencies
10
+ RUN pip install --upgrade pip
11
+ RUN pip install -r requirements.txt
12
+
13
+ # Expose port for Uvicorn
14
+ EXPOSE 7860
15
+
16
+ # Run FastAPI app
17
+ CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
app.py ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from pydantic import BaseModel
3
+ import pandas as pd
4
+ import joblib
5
+
6
+ app = FastAPI()
7
+
8
+ # Load the model and preprocessor
9
+ model = joblib.load("classifier.joblib")
10
+ preprocessor = joblib.load("preprocessor.joblib")
11
+
12
+
13
+ class InputData(BaseModel):
14
+ data: list # List of dicts (records)
15
+
16
+ @app.post("/predict")
17
+ def predict(input_data: InputData):
18
+ df = pd.DataFrame(input_data.data)
19
+ X = df.drop(columns=["label"], errors="ignore")
20
+ preds = model.predict(preprocessor.transform(X))
21
+ return {"predictions": preds.tolist()}
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ fastapi
2
+ uvicorn
3
+ pandas
4
+ joblib
5
+ scikit-learn