GaneshMaile3/Email_Spam_Ham_Classifier
0
1import streamlit as st2import pandas as pd3from sklearn.feature_extraction.text import CountVectorizer4from sklearn.model_selection import train_test_split5from sklearn.metrics import accuracy_score6from sklearn.naive_bayes import MultinomialNB7 8# Load dataset9df = pd.read_csv("spam (1).csv")10 11# Streamlit title12st.title('📩 Email Spam or Ham Classification')13 14# Prepare data15x = df['Message']16y = df['Category']17bow = CountVectorizer(stop_words='english')18final_data = pd.DataFrame(bow.fit_transform(x).toarray(), columns=bow.get_feature_names_out())19 20# Split data21x_train, x_test, y_train, y_test = train_test_split(final_data, y, test_size=0.25, random_state=20)22 23# Train model24nav_base = MultinomialNB()25nav_base.fit(x_train, y_train)26y_pred = nav_base.predict(x_test)27 28# Predict accuracy29if st.button('Predict Accuracy'):30 st.write(f'Accuracy: {accuracy_score(y_test, y_pred):.2f}')31 32# Email input33user_input = st.text_area('Enter email text')34 35def predict_email(email):36 data = bow.transform([email]).toarray()37 prediction = nav_base.predict(data)[0]38 st.write(f'Prediction: {prediction}')39 40if st.button('Classify Email'):41 if user_input.strip():42 predict_email(user_input)43 else:44 st.warning('Please enter email text.')45 46 47 