Rahul23232 commited on
Commit
c7960cc
·
verified ·
1 Parent(s): be692bb

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -46
app.py CHANGED
@@ -1,46 +1,27 @@
1
- import pandas as pd
2
- import numpy as np
3
- from sklearn.naive_bayes import MultinomialNB
4
- from sklearn.feature_extraction.text import CountVectorizer
5
- from sklearn.model_selection import train_test_split
6
- from sklearn.metrics import classification_report
7
- import gradio as gr
8
-
9
- def load_data():
10
- df = pd.read_csv("spam.csv", encoding="latin-1")
11
- df = df[['v1', 'v2']]
12
- df.columns = ['label', 'message']
13
- df['spam'] = df['label'].apply(lambda x: 1 if x == 'spam' else 0)
14
- return df
15
-
16
- def train_model(df):
17
- X_train, X_test, y_train, y_test = train_test_split(df.message, df.spam, test_size=0.2, random_state=42)
18
-
19
- vectorizer = CountVectorizer()
20
- X_train_cv = vectorizer.fit_transform(X_train)
21
- X_test_cv = vectorizer.transform(X_test)
22
-
23
- model = MultinomialNB()
24
- model.fit(X_train_cv, y_train)
25
-
26
- y_pred = model.predict(X_test_cv)
27
- print("Model performance on test set:")
28
- print(classification_report(y_test, y_pred))
29
-
30
- return model, vectorizer
31
-
32
- def predict_spam(email_text):
33
- email_count = vectorizer.transform([email_text])
34
- prediction = model.predict(email_count)[0]
35
- return "Spam ❌" if prediction == 1 else "Not Spam"
36
- df = load_data()
37
- model, vectorizer = train_model(df)
38
-
39
- interface = gr.Interface(
40
- fn=predict_spam,
41
- inputs=gr.Textbox(lines=5, placeholder="Paste your email text here..."),
42
- outputs="text",
43
- title="Email Spam Detector",
44
- description="A machine learning model using Naive Bayes to detect whether an email is spam or not."
45
- )
46
- interface.launch()
 
1
+ from flask import Flask, render_template, request
2
+ import joblib
3
+
4
+ app = Flask(__name__)
5
+
6
+ # Load trained model
7
+ model = joblib.load("EmailSpamdetection.joblib")
8
+
9
+ @app.route("/", methods=["GET", "POST"])
10
+ def index():
11
+ prediction = None
12
+
13
+ if request.method == "POST":
14
+ email_text = request.form["email"]
15
+
16
+ # Model expects list-like input
17
+ result = model.predict([email_text])[0]
18
+
19
+ if result == 1:
20
+ prediction = "🚫 Spam Email"
21
+ else:
22
+ prediction = "✅ Not Spam Email"
23
+
24
+ return render_template("index.html", prediction=prediction)
25
+
26
+ if __name__ == "__main__":
27
+ app.run(debug=True)