Adisri99 commited on
Commit
d3af767
·
verified ·
1 Parent(s): f966aa4

Create experiments.py

Browse files
Files changed (1) hide show
  1. backend/app/api/experiments.py +38 -0
backend/app/api/experiments.py ADDED
@@ -0,0 +1,38 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pandas as pd
2
+ from fastapi import APIRouter, Depends
3
+ from pydantic import BaseModel
4
+ from sqlalchemy.orm import Session
5
+ from sklearn.cluster import KMeans
6
+
7
+ from backend.app.db import get_db
8
+ from backend.app.repositories.dataset_repo import get_dataset
9
+
10
+ router = APIRouter(tags=["experiments"])
11
+
12
+
13
+ class RunRequest(BaseModel):
14
+ dataset_id: str
15
+ algorithm: str = "kmeans"
16
+ n_clusters: int = 4
17
+ feature_columns: list[str]
18
+
19
+
20
+ @router.post("/experiments/run")
21
+ def run_experiment(req: RunRequest, db: Session = Depends(get_db)):
22
+ dataset = get_dataset(db, req.dataset_id)
23
+
24
+ if not dataset:
25
+ return {"error": "dataset not found"}
26
+
27
+ df = pd.read_csv(dataset.file_path)
28
+
29
+ X = df[req.feature_columns]
30
+
31
+ model = KMeans(n_clusters=req.n_clusters)
32
+ labels = model.fit_predict(X)
33
+
34
+ return {
35
+ "experiment_id": "exp_demo",
36
+ "status": "completed",
37
+ "clusters": labels.tolist(),
38
+ }