Spaces:
Build error
Build error
| import gradio as gr | |
| import joblib | |
| import xgboost as xgb | |
| import numpy as np | |
| def classify_email(email_text): | |
| tfidf = joblib.load('tfidf_vectorizer.joblib') | |
| model = joblib.load('spam_model.joblib') | |
| email_tfidf = tfidf.transform([email_text]) | |
| email_dmatrix = xgb.DMatrix(email_tfidf) | |
| prediction = model.predict(email_dmatrix)[0] | |
| confidence = max(prediction, 1 - prediction) | |
| label = "Spam" if prediction > 0.5 else "Not Spam" | |
| return {label: float(confidence)} | |
| def analyze_email(email_text): | |
| tfidf = joblib.load('tfidf_vectorizer.joblib') | |
| model = joblib.load('spam_model.joblib') | |
| email_tfidf = tfidf.transform([email_text]) | |
| email_dmatrix = xgb.DMatrix(email_tfidf) | |
| prediction = model.predict(email_dmatrix)[0] | |
| confidence = max(prediction, 1 - prediction) | |
| label = "Spam" if prediction > 0.5 else "Not Spam" | |
| # Create Gradio interface | |
| with gr.Blocks(css="footer {visibility: hidden}") as iface: | |
| gr.Markdown( | |
| """ | |
| # ๐ Spam Email Classifier | |
| Using Machine Learning to detect spam emails with high accuracy! | |
| """ | |
| ) | |
| with gr.Row(): | |
| with gr.Column(scale=2): | |
| email_input = gr.Textbox(lines=5, label="Enter email text") | |
| with gr.Row(): | |
| classify_btn = gr.Button("Classify") | |
| with gr.Column(scale=1): | |
| label_output = gr.Label(label="Classification") | |
| examples = [ | |
| ["Get fat quick! Buy our cheese burger now!"], | |
| ["Hi Ajibola, let's go out on a date tonight"], | |
| ["Congratulations! You've won a free iPhone. Click here to claim."], | |
| ["Please find attached the report for Q2 sales figures."] | |
| ] | |
| gr.Examples(examples, inputs=email_input) | |
| classify_btn.click(classify_email, inputs=email_input, outputs=label_output) | |
| gr.Markdown( | |
| """ | |
| ### How it works | |
| This classifier uses an XGBoost model trained on a large dataset of over 190,000 emails. | |
| The model achieved a 98% accuracy on the training data and 94% accuracy on the test data. | |
| It analyzes the content and structure of the email to determine if it's spam or not. | |
| ### Tip for use | |
| - Enter the full text of the email for best results | |
| """ | |
| ) | |
| # Launch the interface | |
| iface.launch() | |