import pandas as pd from sklearn.model_selection import train_test_split from sklearn.feature_extraction.text import TfidfVectorizer from sklearn.naive_bayes import MultinomialNB from sklearn.metrics import classification_report, confusion_matrix data = pd.read_csv('email.csv') data['Message'] = data['Message'].str.lower() data['Category'] = data['Category'].map({'spam': 1, 'ham': 0}) data = data.dropna(subset=['Category']) X_train, X_test, y_train, y_test = train_test_split(data['Message'], data['Category'], test_size=0.2, random_state=42) vectorizer = TfidfVectorizer(stop_words='english') X_train_tfidf = vectorizer.fit_transform(X_train) X_test_tfidf = vectorizer.transform(X_test) model = MultinomialNB() model.fit(X_train_tfidf, y_train) y_pred = model.predict(X_test_tfidf) print(confusion_matrix(y_test, y_pred)) print(classification_report(y_test, y_pred))
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter