Pushpak21 commited on
Commit
f969e9d
·
verified ·
1 Parent(s): ecd44d2

Upload folder using huggingface_hub

Browse files
Random_Forest_Model.pkl CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:8ff344efb433298a18c3abe1a7ef6baecc036bb16dc12bb1cfb90b7d3ab0d554
3
- size 86813571
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:d39188f07d0b74e2aae8f6127bf6a6adf0b7d030d929eaabefbff0825484e7fa
3
+ size 86814371
__pycache__/custom_transformer.cpython-311.pyc ADDED
Binary file (2.64 kB). View file
 
app.py CHANGED
@@ -1,19 +1,53 @@
1
  # Backend_files/app.y
 
2
  import pandas as pd
3
  from flask import Flask, request, jsonify
4
  from flask_cors import CORS
5
- import joblib
6
-
7
  # Import the classes so joblib can find them during unpickling
8
- from custom_transformers import StoreAgeAdder, OutlierCapper
9
-
10
- # Load the trained model
11
- Random_Forest_Loaded_Model = joblib.load('Random_Forest_Model.pkl')
12
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
13
  # Initialize flas app with name
14
  Superkart_Sales_Predictor_API = Flask("Superkart Sales Predictor")
15
  CORS(Superkart_Sales_Predictor_API) # Enable CORS for frontend integration (optional)
16
 
 
 
 
17
  # Define a route for the home page (GET request)
18
  @Superkart_Sales_Predictor_API.get('/')
19
  def home():
@@ -99,4 +133,4 @@ def predict_batch():
99
 
100
  # Run flask in debug mode
101
  if __name__ == '__main__':
102
- Superkart_Sales_Predictor_API.run(debug=False, host='0.0.0.0', port=7860)
 
1
  # Backend_files/app.y
2
+ import joblib
3
  import pandas as pd
4
  from flask import Flask, request, jsonify
5
  from flask_cors import CORS
6
+ from sklearn.base import BaseEstimator, TransformerMixin
 
7
  # Import the classes so joblib can find them during unpickling
8
+ #from backend.files.custom_transformers import StoreAgeAdder, OutlierCapper
9
+
10
+ class StoreAgeAdder(BaseEstimator, TransformerMixin):
11
+ def __init__(self, current_year=2025):
12
+ self.current_year = current_year
13
+
14
+ def fit(self, X, y=None):
15
+ return self
16
+
17
+ def transform(self, X):
18
+ X = X.copy()
19
+ X['store_age'] = self.current_year - X['Store_Establishment_Year']
20
+ return X.drop(columns='Store_Establishment_Year')
21
+
22
+ class OutlierCapper(BaseEstimator, TransformerMixin):
23
+ def __init__(self, factor=1.5):
24
+ self.factor = factor
25
+ self.bounds = {}
26
+
27
+ def fit(self, X, y=None):
28
+ for col in X.columns:
29
+ Q1 = X[col].quantile(0.25)
30
+ Q3 = X[col].quantile(0.75)
31
+ IQR = Q3 - Q1
32
+ lower = Q1 - self.factor * IQR
33
+ upper = Q3 + self.factor * IQR
34
+ self.bounds[col] = (lower, upper)
35
+ return self
36
+
37
+ def transform(self, X):
38
+ X = X.copy()
39
+ for col in X.columns:
40
+ lower, upper = self.bounds[col]
41
+ X[col] = np.clip(X[col], lower, upper)
42
+ return X
43
+
44
  # Initialize flas app with name
45
  Superkart_Sales_Predictor_API = Flask("Superkart Sales Predictor")
46
  CORS(Superkart_Sales_Predictor_API) # Enable CORS for frontend integration (optional)
47
 
48
+ # Load the trained model
49
+ Random_Forest_Loaded_Model = joblib.load('Random_Forest_Model.pkl')
50
+
51
  # Define a route for the home page (GET request)
52
  @Superkart_Sales_Predictor_API.get('/')
53
  def home():
 
133
 
134
  # Run flask in debug mode
135
  if __name__ == '__main__':
136
+ Superkart_Sales_Predictor_API.run(debug=False, host='0.0.0.0', port=7860)
custom_transformer.py ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import numpy as np
2
+ from sklearn.base import BaseEstimator, TransformerMixin
3
+
4
+ class StoreAgeAdder(BaseEstimator, TransformerMixin):
5
+ def __init__(self, current_year=2025):
6
+ self.current_year = current_year
7
+
8
+ def fit(self, X, y=None):
9
+ return self
10
+
11
+ def transform(self, X):
12
+ X = X.copy()
13
+ X['store_age'] = self.current_year - X['Store_Establishment_Year']
14
+ return X.drop(columns='Store_Establishment_Year')
15
+
16
+ class OutlierCapper(BaseEstimator, TransformerMixin):
17
+ def __init__(self, factor=1.5):
18
+ self.factor = factor
19
+ self.bounds = {}
20
+
21
+ def fit(self, X, y=None):
22
+ for col in X.columns:
23
+ Q1 = X[col].quantile(0.25)
24
+ Q3 = X[col].quantile(0.75)
25
+ IQR = Q3 - Q1
26
+ lower = Q1 - self.factor * IQR
27
+ upper = Q3 + self.factor * IQR
28
+ self.bounds[col] = (lower, upper)
29
+ return self
30
+
31
+ def transform(self, X):
32
+ X = X.copy()
33
+ for col in X.columns:
34
+ lower, upper = self.bounds[col]
35
+ X[col] = np.clip(X[col], lower, upper)
36
+ return X
requirements.txt CHANGED
@@ -1,11 +1,10 @@
1
  Flask==3.1.1
2
  flask-cors==6.0.1
3
  geopandas==1.0.1
4
- joblib==1.5.1
5
  pandas==2.2.2
6
  pandas-datareader==0.10.0
7
  pandas-gbq==0.29.1
8
  pandas-stubs==1.2.0.62
9
  scikit-learn==1.6.1
10
  sklearn-pandas==2.2.0
11
- gunicorn==21.2.0 # or latest
 
1
  Flask==3.1.1
2
  flask-cors==6.0.1
3
  geopandas==1.0.1
4
+ joblib==1.4.2
5
  pandas==2.2.2
6
  pandas-datareader==0.10.0
7
  pandas-gbq==0.29.1
8
  pandas-stubs==1.2.0.62
9
  scikit-learn==1.6.1
10
  sklearn-pandas==2.2.0