Spaces:
Sleeping
Sleeping
Update app.py
Browse files
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="
|
| 87 |
cache_dir=MODEL_FOLDER
|
| 88 |
)
|
| 89 |
-
dst_path = os.path.join(MODEL_FOLDER, "
|
| 90 |
shutil.copy(src_path, dst_path)
|
| 91 |
-
|
|
|
|
| 92 |
|
| 93 |
src_path = hf_hub_download(
|
| 94 |
repo_id="WebashalarForML/Diamond_model_",
|
| 95 |
-
filename="
|
| 96 |
cache_dir=MODEL_FOLDER
|
| 97 |
)
|
| 98 |
-
dst_path = os.path.join(MODEL_FOLDER, "
|
| 99 |
shutil.copy(src_path, dst_path)
|
| 100 |
-
|
| 101 |
-
|
| 102 |
# Prediction analysis models loaded from Hugging Face.
|
| 103 |
src_path = hf_hub_download(
|
| 104 |
repo_id="WebashalarForML/Diamond_model_",
|
| 105 |
-
filename="
|
| 106 |
cache_dir=MODEL_FOLDER
|
| 107 |
)
|
| 108 |
-
dst_path = os.path.join(MODEL_FOLDER, "
|
| 109 |
shutil.copy(src_path, dst_path)
|
| 110 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 111 |
|
| 112 |
-
#classsification model on the task
|
| 113 |
src_path = hf_hub_download(
|
| 114 |
repo_id="WebashalarForML/Diamond_model_",
|
| 115 |
-
filename="
|
| 116 |
cache_dir=MODEL_FOLDER
|
| 117 |
)
|
| 118 |
-
dst_path = os.path.join(MODEL_FOLDER, "
|
| 119 |
shutil.copy(src_path, dst_path)
|
| 120 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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
|
| 260 |
-
df_pred_0 = df_pred
|
| 261 |
-
df_pred_0['
|
| 262 |
print(df_pred_0.columns)
|
| 263 |
-
|
| 264 |
-
|
| 265 |
-
|
| 266 |
-
|
| 267 |
-
|
| 268 |
-
|
|
|
|
| 269 |
print(df_pred_0.columns)
|
| 270 |
|
| 271 |
-
# for model
|
| 272 |
-
|
| 273 |
-
|
| 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 |
-
#
|
| 298 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 299 |
|
| 300 |
-
#
|
| 301 |
-
|
| 302 |
-
|
| 303 |
-
print("df_pred_main------------->", df_pred_main.columns)
|
| 304 |
|
| 305 |
-
#
|
| 306 |
-
|
| 307 |
-
|
| 308 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 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 |
-
|
| 365 |
-
|
| 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':
|
| 436 |
-
'Makable_Predicted':
|
| 437 |
-
'Makable_Diff':
|
| 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',
|