Spaces:
Runtime error
Runtime error
| import pandas as pd | |
| import joblib | |
| import time | |
| import re | |
| from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix | |
| import logging | |
| logging.basicConfig(level=logging.INFO) | |
| logger = logging.getLogger(__name__) | |
| ML_MODEL_PATH = "/home/office-7/support-intelligence-backend/core/services/models/spam_detection_model.pkl" | |
| DATASET_PATH = "/home/office-7/Downloads/spam_dedection_dataset - synthetic_spam_50k.csv" | |
| def preprocess_ml(text): | |
| text = str(text).lower() | |
| text = re.sub(r'[^\w\s]', '', text) | |
| text = re.sub(r'\d+', '', text) | |
| return text.strip() | |
| def evaluate_large(): | |
| logger.info("Loading ML model...") | |
| try: | |
| model = joblib.load(ML_MODEL_PATH) | |
| except Exception as e: | |
| logger.error(f"Failed to load model: {e}") | |
| return | |
| logger.info("Loading 50k dataset...") | |
| try: | |
| df = pd.read_csv(DATASET_PATH) | |
| except Exception as e: | |
| logger.error(f"Failed to load dataset: {e}") | |
| return | |
| results = [] | |
| # Overall Evaluation | |
| logger.info("Evaluating Overall Performance...") | |
| start_time = time.time() | |
| clean_texts = [preprocess_ml(t) for t in df['text']] | |
| predictions = model.predict(clean_texts) | |
| end_time = time.time() | |
| overall_acc = accuracy_score(df['label'], predictions) | |
| overall_prec = precision_score(df['label'], predictions) | |
| overall_rec = recall_score(df['label'], predictions) | |
| overall_f1 = f1_score(df['label'], predictions) | |
| avg_speed = (end_time - start_time) / len(df) | |
| results.append({ | |
| "Language": "OVERALL", | |
| "Samples": len(df), | |
| "Accuracy": overall_acc, | |
| "Precision": overall_prec, | |
| "Recall": overall_rec, | |
| "F1": overall_f1, | |
| "Avg Speed (s)": avg_speed | |
| }) | |
| # Language-wise Evaluation | |
| for lang in df['language'].unique(): | |
| logger.info(f"Evaluating Language: {lang}...") | |
| lang_df = df[df['language'] == lang] | |
| lang_texts = [preprocess_ml(t) for t in lang_df['text']] | |
| lang_preds = model.predict(lang_texts) | |
| acc = accuracy_score(lang_df['label'], lang_preds) | |
| prec = precision_score(lang_df['label'], lang_preds, zero_division=0) | |
| rec = recall_score(lang_df['label'], lang_preds, zero_division=0) | |
| f1 = f1_score(lang_df['label'], lang_preds, zero_division=0) | |
| results.append({ | |
| "Language": lang, | |
| "Samples": len(lang_df), | |
| "Accuracy": acc, | |
| "Precision": prec, | |
| "Recall": rec, | |
| "F1": f1, | |
| "Avg Speed (s)": avg_speed # Speed is mostly uniform for ML model | |
| }) | |
| results_df = pd.DataFrame(results) | |
| results_df.to_csv("ml_model_large_eval.csv", index=False) | |
| print("\n--- ML Model Performance Summary (50k Dataset) ---") | |
| print(results_df.to_string(index=False)) | |
| print("\nResults saved to ml_model_large_eval.csv") | |
| if __name__ == "__main__": | |
| evaluate_large() | |