SailajaS commited on
Commit
10b4411
Β·
verified Β·
1 Parent(s): a9baa2a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +9 -9
app.py CHANGED
@@ -54,15 +54,15 @@ for col in required_columns:
54
  if col not in df.columns:
55
  raise Exception(f"❌ Column '{col}' is missing from the dataset!")
56
 
57
- # βœ… Convert "Case Problem" column to lowercase for consistency
58
- df["Case Problem"] = df["Case Problem"].astype(str).str.lower()
59
 
60
- # βœ… Encode categorical variables
61
  encoder = LabelEncoder()
62
  df["Case Problem Encoded"] = encoder.fit_transform(df["Case Problem"])
63
  df["Feedback Encoded"] = encoder.fit_transform(df["Feedback"])
64
 
65
- # βœ… Save encoder for later use
66
  joblib.dump(encoder, "case_problem_encoder.pkl")
67
 
68
  # βœ… Train Model
@@ -72,7 +72,7 @@ X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_
72
  model = RandomForestClassifier(n_estimators=100, random_state=42)
73
  model.fit(X_train, y_train)
74
 
75
- # βœ… Save model
76
  joblib.dump(model, "feedback_model.pkl")
77
  print("βœ… Model trained successfully!")
78
 
@@ -89,8 +89,8 @@ async def predict_feedback(data: PredictionInput):
89
  # βœ… Load encoder
90
  encoder = joblib.load("case_problem_encoder.pkl")
91
 
92
- # βœ… Convert input to lowercase to match training data
93
- case_problem_lower = data.case_problem.lower()
94
 
95
  # βœ… Check if input exists in training data
96
  if case_problem_lower not in df["Case Problem"].values:
@@ -108,13 +108,13 @@ async def predict_feedback(data: PredictionInput):
108
  except Exception as e:
109
  return {"error": str(e)}
110
 
111
- # βœ… Gradio UI with suggestions for valid categories
112
  def gradio_interface(case_problem):
113
  if model is None:
114
  return "Model not trained yet."
115
 
116
  encoder = joblib.load("case_problem_encoder.pkl")
117
- case_problem_lower = case_problem.lower()
118
 
119
  if case_problem_lower not in df["Case Problem"].values:
120
  valid_problems = ", ".join(df["Case Problem"].unique())
 
54
  if col not in df.columns:
55
  raise Exception(f"❌ Column '{col}' is missing from the dataset!")
56
 
57
+ # βœ… Convert "Case Problem" column to lowercase and remove spaces for consistency
58
+ df["Case Problem"] = df["Case Problem"].astype(str).str.strip().str.lower()
59
 
60
+ # βœ… Train and save LabelEncoder to handle unseen labels correctly
61
  encoder = LabelEncoder()
62
  df["Case Problem Encoded"] = encoder.fit_transform(df["Case Problem"])
63
  df["Feedback Encoded"] = encoder.fit_transform(df["Feedback"])
64
 
65
+ # βœ… Save encoder to use it later
66
  joblib.dump(encoder, "case_problem_encoder.pkl")
67
 
68
  # βœ… Train Model
 
72
  model = RandomForestClassifier(n_estimators=100, random_state=42)
73
  model.fit(X_train, y_train)
74
 
75
+ # βœ… Save trained model
76
  joblib.dump(model, "feedback_model.pkl")
77
  print("βœ… Model trained successfully!")
78
 
 
89
  # βœ… Load encoder
90
  encoder = joblib.load("case_problem_encoder.pkl")
91
 
92
+ # βœ… Convert input to lowercase and remove spaces
93
+ case_problem_lower = data.case_problem.strip().lower()
94
 
95
  # βœ… Check if input exists in training data
96
  if case_problem_lower not in df["Case Problem"].values:
 
108
  except Exception as e:
109
  return {"error": str(e)}
110
 
111
+ # βœ… Gradio UI with better handling
112
  def gradio_interface(case_problem):
113
  if model is None:
114
  return "Model not trained yet."
115
 
116
  encoder = joblib.load("case_problem_encoder.pkl")
117
+ case_problem_lower = case_problem.strip().lower()
118
 
119
  if case_problem_lower not in df["Case Problem"].values:
120
  valid_problems = ", ".join(df["Case Problem"].unique())