Spaces:
Runtime error
Runtime error
| import pandas as pd | |
| import numpy as np | |
| from sklearn.naive_bayes import MultinomialNB | |
| from sklearn.feature_extraction.text import CountVectorizer | |
| from sklearn.model_selection import train_test_split | |
| from sklearn.metrics import classification_report | |
| import gradio as gr | |
| def load_data(): | |
| df = pd.read_csv("spam.csv", encoding="latin-1") | |
| df = df[['v1', 'v2']] | |
| df.columns = ['label', 'message'] | |
| df['spam'] = df['label'].apply(lambda x: 1 if x == 'spam' else 0) | |
| return df | |
| def train_model(df): | |
| X_train, X_test, y_train, y_test = train_test_split(df.message, df.spam, test_size=0.2, random_state=42) | |
| vectorizer = CountVectorizer() | |
| X_train_cv = vectorizer.fit_transform(X_train) | |
| X_test_cv = vectorizer.transform(X_test) | |
| model = MultinomialNB() | |
| model.fit(X_train_cv, y_train) | |
| y_pred = model.predict(X_test_cv) | |
| print("Model performance on test set:") | |
| print(classification_report(y_test, y_pred)) | |
| return model, vectorizer | |
| def predict_spam(email_text): | |
| email_count = vectorizer.transform([email_text]) | |
| prediction = model.predict(email_count)[0] | |
| return "Spam ❌" if prediction == 1 else "Not Spam" | |
| df = load_data() | |
| model, vectorizer = train_model(df) | |
| interface = gr.Interface( | |
| fn=predict_spam, | |
| inputs=gr.Textbox(lines=5, placeholder="Paste your email text here..."), | |
| outputs="text", | |
| title="Email Spam Detector", | |
| description="A machine learning model using Naive Bayes to detect whether an email is spam or not." | |
| ) | |
| interface.launch() | |