WebashalarForML commited on
Commit
95574f4
·
verified ·
1 Parent(s): 4bf086a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +124 -124
app.py CHANGED
@@ -1,124 +1,124 @@
1
- from flask import Flask, render_template, request, redirect, url_for, flash
2
- import os
3
- from joblib import load
4
- import numpy as np
5
-
6
- app = Flask(__name__)
7
-
8
- # Set the secret key for session management
9
- app.secret_key = os.urandom(24)
10
-
11
- # Configurations
12
- UPLOAD_FOLDER = "uploads/"
13
- app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
14
- app.config['DEBUG'] = True # Enable debugging during development
15
- app.config['ENV'] = 'development'
16
-
17
- # Load models
18
- gia_model = load(r'H:\DEV PATEL\2025\AI_In_Diamond_Industry\Model\linear_regression_model_gia_price.joblib')
19
- grade_model = load(r'H:\DEV PATEL\2025\AI_In_Diamond_Industry\Model\linear_regression_model_grade_price.joblib')
20
- bygrade_model = load(r'H:\DEV PATEL\2025\AI_In_Diamond_Industry\Model\linear_regression_model_bygrade_price.joblib')
21
- makable_model = load(r'H:\DEV PATEL\2025\AI_In_Diamond_Industry\Model\linear_regression_model_makable_price.joblib')
22
-
23
- # Load label encoders for categorical features (renamed variable to avoid conflict with built-in list)
24
- encoder_list = ['Tag', 'EngShp', 'EngQua', 'EngCol', 'EngCut', 'EngPol', 'EngSym', 'EngFlo', 'EngNts', 'EngMikly', 'EngLab']
25
- loaded_label_encoder = {}
26
- for val in encoder_list:
27
- encoder_path = f"H:/DEV PATEL/2025/AI_In_Diamond_Industry/Label_encoders/label_encoder_{val}.joblib"
28
- loaded_label_encoder[val] = load(encoder_path)
29
-
30
- @app.route('/', methods=['GET'])
31
- def home():
32
- return render_template('home.html')
33
-
34
- @app.route('/predict', methods=['GET', 'POST'])
35
- def predict():
36
- # Redirect GET requests back to the home page
37
- if request.method == 'GET':
38
- return redirect(url_for('home'))
39
-
40
- try:
41
- # Retrieve form data and strip any extra spaces ['Tag', 'EngCts', 'EngShp', 'EngQua', 'EngCol', 'EngCut', 'EngPol', 'EngSym', 'EngFlo', 'EngNts', 'EngMikly', 'EngLab', 'EngAmt',
42
- Tag = request.form.get('Tag', '').strip()
43
- # ICarat = request.form.get('ICarat', '').strip()
44
- # MkblCarat = request.form.get('MkblCarat', '').strip()
45
- # SawLossCarat = request.form.get('SawLossCarat', '').strip()
46
- # CrapsCarat = request.form.get('CrapsCarat', '').strip()
47
- # EngGraphCts = request.form.get('EngGraphCts', '').strip()
48
- EngCts = request.form.get('EngCts', '').strip()
49
- EngShp = request.form.get('EngShp', '').strip()
50
- EngQua = request.form.get('EngQua', '').strip()
51
- EngCol = request.form.get('EngCol', '').strip()
52
- EngCut = request.form.get('EngCut', '').strip()
53
- EngPol = request.form.get('EngPol', '').strip()
54
- EngSym = request.form.get('EngSym', '').strip()
55
- EngFlo = request.form.get('EngFlo', '').strip()
56
- EngNts = request.form.get('EngNts', '').strip()
57
- EngMikly = request.form.get('EngMikly', '').strip()
58
- EngLab = request.form.get('EngLab', '').strip()
59
- EngAmt = request.form.get('EngAmt', '').strip()
60
-
61
- if EngLab == "nan": # or if not EngLab:
62
- EngLab = np.nan
63
- else:
64
- EngLab = EngLab # remains the same
65
-
66
- # Check if any required field is empty
67
- if not all([Tag,
68
- #ICarat, MkblCarat, SawLossCarat, CrapsCarat, EngGraphCts,
69
- EngCts, EngShp, EngQua, EngCol,
70
- EngCut, EngPol, EngSym, EngFlo, EngNts, EngMikly,
71
- EngLab, EngAmt]):
72
- flash("Please fill all the fields", "error")
73
- return redirect(url_for('home'))
74
-
75
- # Transform categorical features using loaded label encoders
76
- Tag = loaded_label_encoder['Tag'].transform([Tag])[0]
77
- EngShp = loaded_label_encoder['EngShp'].transform([EngShp])[0]
78
- EngQua = loaded_label_encoder['EngQua'].transform([EngQua])[0]
79
- EngCol = loaded_label_encoder['EngCol'].transform([EngCol])[0]
80
- EngCut = loaded_label_encoder['EngCut'].transform([EngCut])[0]
81
- EngPol = loaded_label_encoder['EngPol'].transform([EngPol])[0]
82
- EngSym = loaded_label_encoder['EngSym'].transform([EngSym])[0]
83
- EngFlo = loaded_label_encoder['EngFlo'].transform([EngFlo])[0]
84
- EngNts = loaded_label_encoder['EngNts'].transform([EngNts])[0]
85
- EngMikly = loaded_label_encoder['EngMikly'].transform([EngMikly])[0]
86
- EngLab = loaded_label_encoder['EngLab'].transform([EngLab])[0]
87
-
88
- # Convert numeric fields to float
89
- # ICarat = float(ICarat)
90
- # MkblCarat = float(MkblCarat)
91
- # SawLossCarat = float(SawLossCarat)
92
- # CrapsCarat = float(CrapsCarat)
93
- # EngGraphCts = float(EngGraphCts)
94
- EngCts = float(EngCts)
95
- EngAmt = float(EngAmt)
96
-
97
- # Prepare input data for prediction
98
- input_features = [[Tag,
99
- #ICarat, MkblCarat, SawLossCarat, CrapsCarat, EngGraphCts,
100
- EngCts, EngShp, EngQua, EngCol, EngCut,
101
- EngPol, EngSym, EngFlo, EngNts, EngMikly, EngLab, EngAmt]]
102
-
103
- # Make predictions
104
- gia_price = gia_model.predict(input_features)[0]
105
- grade_price = grade_model.predict(input_features)[0]
106
- bygrade_price = bygrade_model.predict(input_features)[0]
107
- makable_price = makable_model.predict(input_features)[0]
108
-
109
- gia_diff = EngAmt - gia_price
110
- grade_diff = EngAmt - grade_price
111
- bygrade_diff = EngAmt - bygrade_price
112
- makable_diff = EngAmt - makable_price
113
-
114
- except Exception as e:
115
- flash(f"Error in calculating the price: {e}", "error")
116
- return redirect(url_for('home'))
117
-
118
- return render_template('results.html', gia_price=gia_price, grade_price=grade_price,
119
- bygrade_price=bygrade_price, makable_price=makable_price,
120
- gia_diff=gia_diff,grade_diff=grade_diff,bygrade_diff=bygrade_diff,
121
- makable_diff=makable_diff)
122
-
123
- if __name__ == "__main__":
124
- app.run(debug=True, use_reloader=False)
 
1
+ from flask import Flask, render_template, request, redirect, url_for, flash
2
+ import os
3
+ from joblib import load
4
+ import numpy as np
5
+
6
+ app = Flask(__name__)
7
+
8
+ # Set the secret key for session management
9
+ app.secret_key = os.urandom(24)
10
+
11
+ # Configurations
12
+ UPLOAD_FOLDER = "uploads/"
13
+ app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
14
+ app.config['DEBUG'] = True # Enable debugging during development
15
+ app.config['ENV'] = 'development'
16
+
17
+ # Load models
18
+ gia_model = load(r'.\Model\linear_regression_model_gia_price.joblib')
19
+ grade_model = load(r'.\Model\linear_regression_model_grade_price.joblib')
20
+ bygrade_model = load(r'.\Model\linear_regression_model_bygrade_price.joblib')
21
+ makable_model = load(r'.\Model\linear_regression_model_makable_price.joblib')
22
+
23
+ # Load label encoders for categorical features (renamed variable to avoid conflict with built-in list)
24
+ encoder_list = ['Tag', 'EngShp', 'EngQua', 'EngCol', 'EngCut', 'EngPol', 'EngSym', 'EngFlo', 'EngNts', 'EngMikly', 'EngLab']
25
+ loaded_label_encoder = {}
26
+ for val in encoder_list:
27
+ encoder_path = f"H:/DEV PATEL/2025/AI_In_Diamond_Industry/Label_encoders/label_encoder_{val}.joblib"
28
+ loaded_label_encoder[val] = load(encoder_path)
29
+
30
+ @app.route('/', methods=['GET'])
31
+ def home():
32
+ return render_template('home.html')
33
+
34
+ @app.route('/predict', methods=['GET', 'POST'])
35
+ def predict():
36
+ # Redirect GET requests back to the home page
37
+ if request.method == 'GET':
38
+ return redirect(url_for('home'))
39
+
40
+ try:
41
+ # Retrieve form data and strip any extra spaces ['Tag', 'EngCts', 'EngShp', 'EngQua', 'EngCol', 'EngCut', 'EngPol', 'EngSym', 'EngFlo', 'EngNts', 'EngMikly', 'EngLab', 'EngAmt',
42
+ Tag = request.form.get('Tag', '').strip()
43
+ # ICarat = request.form.get('ICarat', '').strip()
44
+ # MkblCarat = request.form.get('MkblCarat', '').strip()
45
+ # SawLossCarat = request.form.get('SawLossCarat', '').strip()
46
+ # CrapsCarat = request.form.get('CrapsCarat', '').strip()
47
+ # EngGraphCts = request.form.get('EngGraphCts', '').strip()
48
+ EngCts = request.form.get('EngCts', '').strip()
49
+ EngShp = request.form.get('EngShp', '').strip()
50
+ EngQua = request.form.get('EngQua', '').strip()
51
+ EngCol = request.form.get('EngCol', '').strip()
52
+ EngCut = request.form.get('EngCut', '').strip()
53
+ EngPol = request.form.get('EngPol', '').strip()
54
+ EngSym = request.form.get('EngSym', '').strip()
55
+ EngFlo = request.form.get('EngFlo', '').strip()
56
+ EngNts = request.form.get('EngNts', '').strip()
57
+ EngMikly = request.form.get('EngMikly', '').strip()
58
+ EngLab = request.form.get('EngLab', '').strip()
59
+ EngAmt = request.form.get('EngAmt', '').strip()
60
+
61
+ if EngLab == "nan": # or if not EngLab:
62
+ EngLab = np.nan
63
+ else:
64
+ EngLab = EngLab # remains the same
65
+
66
+ # Check if any required field is empty
67
+ if not all([Tag,
68
+ #ICarat, MkblCarat, SawLossCarat, CrapsCarat, EngGraphCts,
69
+ EngCts, EngShp, EngQua, EngCol,
70
+ EngCut, EngPol, EngSym, EngFlo, EngNts, EngMikly,
71
+ EngLab, EngAmt]):
72
+ flash("Please fill all the fields", "error")
73
+ return redirect(url_for('home'))
74
+
75
+ # Transform categorical features using loaded label encoders
76
+ Tag = loaded_label_encoder['Tag'].transform([Tag])[0]
77
+ EngShp = loaded_label_encoder['EngShp'].transform([EngShp])[0]
78
+ EngQua = loaded_label_encoder['EngQua'].transform([EngQua])[0]
79
+ EngCol = loaded_label_encoder['EngCol'].transform([EngCol])[0]
80
+ EngCut = loaded_label_encoder['EngCut'].transform([EngCut])[0]
81
+ EngPol = loaded_label_encoder['EngPol'].transform([EngPol])[0]
82
+ EngSym = loaded_label_encoder['EngSym'].transform([EngSym])[0]
83
+ EngFlo = loaded_label_encoder['EngFlo'].transform([EngFlo])[0]
84
+ EngNts = loaded_label_encoder['EngNts'].transform([EngNts])[0]
85
+ EngMikly = loaded_label_encoder['EngMikly'].transform([EngMikly])[0]
86
+ EngLab = loaded_label_encoder['EngLab'].transform([EngLab])[0]
87
+
88
+ # Convert numeric fields to float
89
+ # ICarat = float(ICarat)
90
+ # MkblCarat = float(MkblCarat)
91
+ # SawLossCarat = float(SawLossCarat)
92
+ # CrapsCarat = float(CrapsCarat)
93
+ # EngGraphCts = float(EngGraphCts)
94
+ EngCts = float(EngCts)
95
+ EngAmt = float(EngAmt)
96
+
97
+ # Prepare input data for prediction
98
+ input_features = [[Tag,
99
+ #ICarat, MkblCarat, SawLossCarat, CrapsCarat, EngGraphCts,
100
+ EngCts, EngShp, EngQua, EngCol, EngCut,
101
+ EngPol, EngSym, EngFlo, EngNts, EngMikly, EngLab, EngAmt]]
102
+
103
+ # Make predictions
104
+ gia_price = gia_model.predict(input_features)[0]
105
+ grade_price = grade_model.predict(input_features)[0]
106
+ bygrade_price = bygrade_model.predict(input_features)[0]
107
+ makable_price = makable_model.predict(input_features)[0]
108
+
109
+ gia_diff = EngAmt - gia_price
110
+ grade_diff = EngAmt - grade_price
111
+ bygrade_diff = EngAmt - bygrade_price
112
+ makable_diff = EngAmt - makable_price
113
+
114
+ except Exception as e:
115
+ flash(f"Error in calculating the price: {e}", "error")
116
+ return redirect(url_for('home'))
117
+
118
+ return render_template('results.html', gia_price=gia_price, grade_price=grade_price,
119
+ bygrade_price=bygrade_price, makable_price=makable_price,
120
+ gia_diff=gia_diff,grade_diff=grade_diff,bygrade_diff=bygrade_diff,
121
+ makable_diff=makable_diff)
122
+
123
+ if __name__ == "__main__":
124
+ app.run(debug=True, use_reloader=False)