WebashalarForML commited on
Commit
c8045ce
·
verified ·
1 Parent(s): 6d9d603

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +105 -83
app.py CHANGED
@@ -81,50 +81,92 @@ os.makedirs(app.config['MODEL_FOLDER'], exist_ok=True)
81
 
82
  # Prediction analysis models loaded from Hugging Face.
83
 
 
 
84
  src_path = hf_hub_download(
85
  repo_id="WebashalarForML/Diamond_model_",
86
- filename="models_list/mkble/DecisionTree_best_pipeline_mkble_0_to_0.99_al.pkl",
87
  cache_dir=MODEL_FOLDER
88
  )
89
- dst_path = os.path.join(MODEL_FOLDER, "DecisionTree_best_pipeline_mkble_0_to_0.99_al.pkl")
90
  shutil.copy(src_path, dst_path)
91
- makable_model_0 = load(dst_path)
 
92
 
93
  src_path = hf_hub_download(
94
  repo_id="WebashalarForML/Diamond_model_",
95
- filename="models_list/mkble/DecisionTree_best_pipeline_mkble_1_to_1.49.pkl",
96
  cache_dir=MODEL_FOLDER
97
  )
98
- dst_path = os.path.join(MODEL_FOLDER, "DecisionTree_best_pipeline_mkble_1_to_1.49.pkl")
99
  shutil.copy(src_path, dst_path)
100
- makable_model_1 = load(dst_path)
101
-
102
  # Prediction analysis models loaded from Hugging Face.
103
  src_path = hf_hub_download(
104
  repo_id="WebashalarForML/Diamond_model_",
105
- filename="models_list/mkble/DecisionTree_best_pipeline_mkble_1.50_to_1.99.pkl",
106
  cache_dir=MODEL_FOLDER
107
  )
108
- dst_path = os.path.join(MODEL_FOLDER, "DecisionTree_best_pipeline_mkble_1.50_to_1.99.pkl")
109
  shutil.copy(src_path, dst_path)
110
- makable_model_2 = load(dst_path)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
 
112
- #classsification model on the task
113
  src_path = hf_hub_download(
114
  repo_id="WebashalarForML/Diamond_model_",
115
- filename="models_list/classification/3_pipeline.pkl",
116
  cache_dir=MODEL_FOLDER
117
  )
118
- dst_path = os.path.join(MODEL_FOLDER, "3_pipeline.pkl")
119
  shutil.copy(src_path, dst_path)
120
- mkble_amt_class_model = load(dst_path)
 
 
 
 
 
 
 
 
 
 
 
121
 
122
  #print("makable_model type:", type(makable_model))
123
  #print("grade_model type:", type(grade_model))
124
  #print("bygrade_model type:", type(bygrade_model))
125
  #print("gia_model type:", type(gia_model))
126
  print("================================")
127
- print("mkble_amt_class_model type:", type(mkble_amt_class_model))
128
 
129
  # List of label encoder names.
130
  encoder_list = [
@@ -256,56 +298,52 @@ def process_dataframe(df):
256
  # -------------------------
257
  try:
258
 
259
- # for model 0 to 0.99
260
- df_pred_0 = df_pred[(df_pred[['EngCts']] > 0.00).all(axis=1) & (df_pred[['EngCts']] < 0.99).all(axis=1)]
261
- df_pred_0['change_in_amt_mkble'] = pd.DataFrame(mkble_amt_class_model.predict(df_pred_0), columns=["pred_change_in_eng_to_mkble"])
262
  print(df_pred_0.columns)
263
- df_pred_0 = df_pred_0[['Tag', 'EngCts', 'EngShp', 'EngQua', 'EngCol', 'EngCut', 'EngPol',
264
- 'EngSym', 'EngFlo', 'EngNts', 'EngMikly', 'EngBlk', 'EngWht', 'EngOpen',
265
- 'EngPav', 'EngAmt',
266
- 'change_in_amt_mkble'
267
- ]]
268
- df_pred_0['Makable_Predicted'] = pd.DataFrame(np.expm1(makable_model_0.predict(df_pred_0)), columns=["Predicted"])
 
269
  print(df_pred_0.columns)
270
 
271
- # for model 1 to 1.49
272
-
273
- df_pred_1 = df_pred[(df_pred[['EngCts']] > 0.99).all(axis=1) & (df_pred[['EngCts']] < 1.50).all(axis=1)]
274
- df_pred_1['change_in_amt_mkble'] = pd.DataFrame(mkble_amt_class_model.predict(df_pred_1), columns=["pred_change_in_eng_to_mkble"])
275
- print(df_pred_1.columns)
276
- df_pred_1 = df_pred_1[['Tag', 'EngCts', 'EngShp', 'EngQua', 'EngCol', 'EngCut', 'EngPol',
277
- 'EngSym', 'EngFlo', 'EngNts', 'EngMikly', 'EngBlk', 'EngWht', 'EngOpen',
278
- 'EngPav', 'EngAmt',
279
- 'change_in_amt_mkble'
280
- ]]
281
- df_pred_1['Makable_Predicted'] = pd.DataFrame(np.expm1(makable_model_1.predict(df_pred_1)), columns=["Predicted"])
282
- print(df_pred_1.columns)
283
-
284
- # for model 1.50 to 1.99
285
-
286
- df_pred_2 = df_pred[(df_pred[['EngCts']] > 1.49).all(axis=1) & (df_pred[['EngCts']] < 2.00).all(axis=1)]
287
- df_pred_2['change_in_amt_mkble'] = pd.DataFrame(mkble_amt_class_model.predict(df_pred_2), columns=["pred_change_in_eng_to_mkble"])
288
- print(df_pred_2.columns)
289
- df_pred_2 = df_pred_2[['Tag', 'EngCts', 'EngShp', 'EngQua', 'EngCol', 'EngCut', 'EngPol',
290
- 'EngSym', 'EngFlo', 'EngNts', 'EngMikly', 'EngBlk', 'EngWht', 'EngOpen',
291
- 'EngPav', 'EngAmt',
292
- 'change_in_amt_mkble'
293
- ]]
294
- df_pred_2['Makable_Predicted'] = pd.DataFrame(np.expm1(makable_model_2.predict(df_pred_2)), columns=["Predicted"])
295
- print(df_pred_2.columns)
296
 
297
- # Concatenate the DataFrames row-wise
298
- df_pred_main = pd.concat([df_pred_0, df_pred_1, df_pred_2], ignore_index=True)
 
 
 
 
 
299
 
300
- # df_pred_main = pd.concat([df_pred_0, df_pred_1, df_pred_2])
301
- print("df_pred_main------------->", df_pred_main.columns)
302
- df_pred_main['Makable_Diff'] = df_pred_main['EngAmt'] - df_pred_main['Makable_Predicted']
303
- print("df_pred_main------------->", df_pred_main.columns)
304
 
305
- # Fill NaN or missing values in prediction columns
306
- # df_pred_main[['change_in_amt_mkble', 'Makable_Predicted', 'Makable_Diff']] = df_pred_main[['change_in_amt_mkble', 'Makable_Predicted', 'Makable_Diff']].fillna("-")
307
-
308
- for col in ['Tag', 'EngShp', 'EngQua', 'EngCol', 'EngCut', 'EngPol', 'EngSym', 'EngFlo', 'EngNts', 'EngMikly','EngBlk', 'EngWht', 'EngOpen', 'EngPav']:
 
 
 
 
 
 
 
 
 
 
 
 
 
309
  try:
310
  df_pred_main[col] = loaded_label_encoder[col].inverse_transform(df_pred_main[col].astype(int))
311
  except ValueError as e:
@@ -318,7 +356,6 @@ def process_dataframe(df):
318
  print("EngWht", df_pred_main['EngWht'].unique())
319
  print("EngOpen", df_pred_main['EngOpen'].unique())
320
  print("EngPav", df_pred_main['EngPav'].unique())
321
-
322
 
323
  # Final return with full data for pagination.
324
  df_pred_main['EngBlk'] = df_pred_main['EngBlk'].fillna("-")
@@ -361,24 +398,8 @@ def report_view():
361
 
362
  df_page = df.iloc[start_idx:end_idx]
363
 
364
- # # -------------------------------------V CHnages --------------------------------------
365
- # # 👇 Inject arrows based on Makable_Diff
366
- # def add_arrow(row):
367
- # try:
368
- # pred = float(row['Makable_Predicted'])
369
- # diff = float(row['Makable_Diff'])
370
- # if np.isnan(pred) or np.isnan(diff):
371
- # return '-'
372
- # arrow = '↑' if diff > 0 else '↓'
373
- # return f"{pred:.3f} {arrow}"
374
- # except:
375
- # return row['Makable_Predicted']
376
-
377
- # df_page['Makable_Predicted'] = df_page.apply(add_arrow, axis=1)
378
- # # -------------------------------------V CHnages --------------------------------------
379
-
380
-
381
- # -------------------------------------V Colored CHnages --------------------------------------
382
  def add_colored_arrow(row):
383
  try:
384
  pred = float(row['Makable_Predicted'])
@@ -390,7 +411,7 @@ def report_view():
390
  else:
391
  return f'{pred:.3f} <span style="color:red;">↓</span>'
392
  except:
393
- return row['Makable_Predicted']
394
 
395
  df_page['Makable_Predicted'] = df_page.apply(add_colored_arrow, axis=1)
396
  # -------------------------------------V Colored CHnages --------------------------------------
@@ -428,14 +449,15 @@ def report_view():
428
  print("------------------------------------------------------------------------------------------------")
429
  print("df_page['Makable_Diff']", df_page['Makable_Diff'])
430
  print("------------------------------------------------------------------------------------------------")
431
-
432
  # ------------------ V changes --------------------------------------
433
  # Prepare chart data (convert to JSON for JS)
434
  chart_data = {
435
- 'EngCts': df_page['EngCts'].tolist(),
436
- 'Makable_Predicted': df_page['Makable_Predicted'].tolist(),
437
- 'Makable_Diff': df_page['Makable_Diff'].tolist()
438
  }
 
439
  # ------------------ V changes --------------------------------------
440
 
441
  return render_template('output.html',
 
81
 
82
  # Prediction analysis models loaded from Hugging Face.
83
 
84
+
85
+ #classsification model on the task
86
  src_path = hf_hub_download(
87
  repo_id="WebashalarForML/Diamond_model_",
88
+ filename="CLASS_DUMMY/LR_best_2_clas_shp_change.pkl",
89
  cache_dir=MODEL_FOLDER
90
  )
91
+ dst_path = os.path.join(MODEL_FOLDER, "LR_best_2_clas_shp_change.pkl")
92
  shutil.copy(src_path, dst_path)
93
+ shape_change = load(dst_path)
94
+
95
 
96
  src_path = hf_hub_download(
97
  repo_id="WebashalarForML/Diamond_model_",
98
+ filename="CLASS_DUMMY/LR_best_2_class_blk(M)_change.pkl",
99
  cache_dir=MODEL_FOLDER
100
  )
101
+ dst_path = os.path.join(MODEL_FOLDER, "LR_best_2_class_blk(M)_change.pkl")
102
  shutil.copy(src_path, dst_path)
103
+ blk_change = load(dst_path)
104
+ '''
105
  # Prediction analysis models loaded from Hugging Face.
106
  src_path = hf_hub_download(
107
  repo_id="WebashalarForML/Diamond_model_",
108
+ filename="CLASS_DUMMY/LR_best_2_class_wht(M)_change.pkl",
109
  cache_dir=MODEL_FOLDER
110
  )
111
+ dst_path = os.path.join(MODEL_FOLDER, "LR_best_2_class_wht(M)_change.pkl")
112
  shutil.copy(src_path, dst_path)
113
+ wht_change = load(dst_path)
114
+
115
+
116
+ src_path = hf_hub_download(
117
+ repo_id="WebashalarForML/Diamond_model_",
118
+ filename="CLASS_DUMMY/LR_best_2_class_pav(M)_change.pkl",
119
+ cache_dir=MODEL_FOLDER
120
+ )
121
+ dst_path = os.path.join(MODEL_FOLDER, "LR_best_2_class_pav(M)_change.pkl")
122
+ shutil.copy(src_path, dst_path)
123
+ pav_change = load(dst_path)
124
+
125
+ src_path = hf_hub_download(
126
+ repo_id="WebashalarForML/Diamond_model_",
127
+ filename="CLASS_DUMMY/LR_best_2_class_open(M)_change.pkl",
128
+ cache_dir=MODEL_FOLDER
129
+ )
130
+ dst_path = os.path.join(MODEL_FOLDER, "LR_best_2_class_open(M)_change.pkl")
131
+ shutil.copy(src_path, dst_path)
132
+ open_change = load(dst_path)
133
+
134
+ # other param class change
135
+ src_path = hf_hub_download(
136
+ repo_id="WebashalarForML/Diamond_model_",
137
+ filename="CLASS_DUMMY/LR_best_2_class_col_change.pkl",
138
+ cache_dir=MODEL_FOLDER
139
+ )
140
+ dst_path = os.path.join(MODEL_FOLDER, "LR_best_2_class_col_change.pkl")
141
+ shutil.copy(src_path, dst_path)
142
+ col_change = load(dst_path)
143
 
 
144
  src_path = hf_hub_download(
145
  repo_id="WebashalarForML/Diamond_model_",
146
+ filename="CLASS_DUMMY/LR_best_2_class_qua_change.pkl",
147
  cache_dir=MODEL_FOLDER
148
  )
149
+ dst_path = os.path.join(MODEL_FOLDER, "LR_best_2_class_qua_change.pkl")
150
  shutil.copy(src_path, dst_path)
151
+ qua_change = load(dst_path)
152
+
153
+ src_path = hf_hub_download(
154
+ repo_id="WebashalarForML/Diamond_model_",
155
+ filename="CLASS_DUMMY/LR_best_2_class_cut_change.pkl",
156
+ cache_dir=MODEL_FOLDER
157
+ )
158
+ dst_path = os.path.join(MODEL_FOLDER, "LR_best_2_class_cut_change.pkl")
159
+ shutil.copy(src_path, dst_path)
160
+ cut_change = load(dst_path)
161
+
162
+ '''
163
 
164
  #print("makable_model type:", type(makable_model))
165
  #print("grade_model type:", type(grade_model))
166
  #print("bygrade_model type:", type(bygrade_model))
167
  #print("gia_model type:", type(gia_model))
168
  print("================================")
169
+ #print("mkble_amt_class_model type:", type(mkble_amt_class_model))
170
 
171
  # List of label encoder names.
172
  encoder_list = [
 
298
  # -------------------------
299
  try:
300
 
301
+ # for model BLK CODE
302
+ df_pred_0 = df_pred.copy()
303
+ df_pred_0['Change_Blk_Eng_to_Mkbl_value'] = pd.DataFrame(blk_change.predict(df_pred), columns=["Change_Blk_Eng_to_Mkbl_value"])
304
  print(df_pred_0.columns)
305
+
306
+ # for model WHT CODE
307
+ df_pred_0['Change_Wht_Eng_to_Mkbl_value'] = pd.DataFrame(shape_change.predict(df_pred), columns=["Change_Wht_Eng_to_Mkbl_value"])
308
+ print(df_pred_0.columns)
309
+ '''
310
+ # for model PAV CODE (need change)
311
+ df_pred_0['Change_Pav_Eng_to_Mkbl_value'] = pd.DataFrame(mkble_amt_class_model.predict(df_pred), columns=["Change_Pav_Eng_to_Mkbl_value"])
312
  print(df_pred_0.columns)
313
 
314
+ # for model OPEN CODE (need change)
315
+ df_pred_0['Change_Open_Eng_to_Mkbl_value'] = pd.DataFrame(mkble_amt_class_model.predict(df_pred), columns=["Change_Open_Eng_to_Mkbl_value"])
316
+ print(df_pred_0.columns)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
317
 
318
+ # for model SHP CODE (need change)
319
+ df_pred_0['Change_shape_value'] = pd.DataFrame(mkble_amt_class_model.predict(df_pred), columns=["Change_shape_value"])
320
+ print(df_pred_0.columns)
321
+
322
+ # for model COL CODE (need change)
323
+ df_pred_0['Change_color_value'] = pd.DataFrame(mkble_amt_class_model.predict(df_pred), columns=["Change_color_value"])
324
+ print(df_pred_0.columns)
325
 
326
+ # for model CUT CODE (need change)
327
+ df_pred_0['Change_cut_value'] = pd.DataFrame(mkble_amt_class_model.predict(df_pred), columns=["Change_cut_value"])
328
+ print(df_pred_0.columns)
 
329
 
330
+ # for model QUA CODE (need change)
331
+ df_pred_0['Change_quality_value'] = pd.DataFrame(mkble_amt_class_model.predict(df_pred), columns=["Change_quality_value"])
332
+ print(df_pred_0.columns)
333
+ '''
334
+ # Concatenate the DataFrames row-wise
335
+ #df_pred_main = pd.concat([df_pred_0, df_pred_1, df_pred_0], ignore_index=True)
336
+ df_pred_main = df_pred_0.copy()
337
+
338
+ for col in ['Tag', 'EngShp', 'EngQua', 'EngCol', 'EngCut', 'EngPol', 'EngSym', 'EngFlo',
339
+ 'EngNts', 'EngMikly', 'EngLab','EngBlk', 'EngWht', 'EngOpen','EngPav',
340
+ 'Change_cts_value', 'Change_shape_value', 'Change_quality_value', 'Change_color_value',
341
+ 'Change_cut_value', 'Change_Blk_Eng_to_Mkbl_value', 'Change_Wht_Eng_to_Mkbl_value',
342
+ 'Change_Open_Eng_to_Mkbl_value', 'Change_Pav_Eng_to_Mkbl_value', 'Change_Blk_Eng_to_Grd_value',
343
+ 'Change_Wht_Eng_to_Grd_value', 'Change_Open_Eng_to_Grd_value', 'Change_Pav_Eng_to_Grd_value',
344
+ 'Change_Blk_Eng_to_ByGrd_value', 'Change_Wht_Eng_to_ByGrd_value', 'Change_Open_Eng_to_ByGrd_value',
345
+ 'Change_Pav_Eng_to_ByGrd_value', 'Change_Blk_Eng_to_Gia_value', 'Change_Wht_Eng_to_Gia_value',
346
+ 'Change_Open_Eng_to_Gia_value', 'Change_Pav_Eng_to_Gia_value']:
347
  try:
348
  df_pred_main[col] = loaded_label_encoder[col].inverse_transform(df_pred_main[col].astype(int))
349
  except ValueError as e:
 
356
  print("EngWht", df_pred_main['EngWht'].unique())
357
  print("EngOpen", df_pred_main['EngOpen'].unique())
358
  print("EngPav", df_pred_main['EngPav'].unique())
 
359
 
360
  # Final return with full data for pagination.
361
  df_pred_main['EngBlk'] = df_pred_main['EngBlk'].fillna("-")
 
398
 
399
  df_page = df.iloc[start_idx:end_idx]
400
 
401
+ # -------------------------------------V Colored CHnages --------------------------------------
402
+ '''
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
403
  def add_colored_arrow(row):
404
  try:
405
  pred = float(row['Makable_Predicted'])
 
411
  else:
412
  return f'{pred:.3f} <span style="color:red;">↓</span>'
413
  except:
414
+ return row['Makable_Predicted'] or []
415
 
416
  df_page['Makable_Predicted'] = df_page.apply(add_colored_arrow, axis=1)
417
  # -------------------------------------V Colored CHnages --------------------------------------
 
449
  print("------------------------------------------------------------------------------------------------")
450
  print("df_page['Makable_Diff']", df_page['Makable_Diff'])
451
  print("------------------------------------------------------------------------------------------------")
452
+ '''
453
  # ------------------ V changes --------------------------------------
454
  # Prepare chart data (convert to JSON for JS)
455
  chart_data = {
456
+ 'EngCts': [],
457
+ 'Makable_Predicted': [],
458
+ 'Makable_Diff': []
459
  }
460
+
461
  # ------------------ V changes --------------------------------------
462
 
463
  return render_template('output.html',