Spam Mail Detection with Machine Learning in Python
How to Train a Machine Learning Model for Spam Classification
Introduction to Spam Classification
- The video introduces the process of training a machine learning model to classify emails as spam or ham (legitimate emails).
- Definitions are provided: "ham" refers to normal emails, while "spam" denotes fraudulent or advertising emails.
- The tutorial will utilize Python libraries such as Scikit-learn and NLTK (Natural Language Toolkit).
Dataset Preparation
- A Kaggle dataset called "Spam Mails Dataset" is used, which contains email content and labels indicating whether they are spam or ham.
- Users can also use their own datasets, but they must ensure that each email is labeled correctly for effective training.
Required Packages Installation
- The necessary packages include Pandas, NumPy, NLTK, and Scikit-learn. These can be installed using pip.
- Specific imports from these libraries are outlined: string for punctuation filtering, numpy for numerical operations, pandas for data manipulation, and various NLTK components for text processing.
Data Preprocessing Steps
- Key preprocessing steps involve removing punctuation from email texts and converting them into lowercase.
- The CountVectorizer from Scikit-learn is introduced to convert text into numerical format by counting token occurrences.
Model Selection and Training Setup
- A random forest classifier is chosen for this task; however, alternatives like decision trees or neural networks could also be utilized based on user preference.
- The importance of splitting the dataset into training and testing sets using train_test_split from Scikit-learn is emphasized.
Loading and Cleaning the Dataset
- Instructions are given on loading the CSV file containing the spam/ham dataset using Pandas' read_csv function.
- Initial data inspection reveals that only two columns (text content and label number) are essential for analysis.
Finalizing Data Preparation
- Line breaks in the text data need to be removed through a lambda function applied across the dataset.
Understanding Text Processing with Porter Stemmer
Introduction to Stemming
- The session begins with the introduction of the Porter stemmer, a tool used for reducing words to their root form. For example, "running" becomes "run," and "sophisticated" is reduced to "sophist."
Corpus Preparation
- An empty list named
corpusis created to store transformed email text. This will serve as the processed version of the original emails.
- A set of stop words is defined using English language terms since the dataset consists of English emails.
Text Preprocessing Steps
- The text from each email is converted to lowercase, and punctuation is removed using Python's string translation functions.
- After cleaning, individual words are split into a list for further processing.
Stemming Process
- Each word in the cleaned list undergoes stemming; only non-stop words are retained after this process.
- The processed words are then joined back together into a single string and appended to the
corpus.
Vectorization and Model Training
- The next step involves vectorizing the corpus using CountVectorizer, transforming text data into numerical format suitable for machine learning models.
- Data is split into training and testing sets (80% train, 20% test), preparing it for model evaluation.
Model Evaluation
- A Random Forest classifier is created with all CPU cores utilized for faster processing. It achieves an impressive accuracy rate of 97.87% on test data.
Classifying New Emails
- To classify new emails as spam or not, preprocessing steps similar to those applied during training are repeated on a selected email.
- The email text undergoes lowercasing, punctuation removal, and stemming before being transformed into a format compatible with the trained model.
Final Prediction Steps
Email Spam Prediction and Accuracy
Overview of Email Classification
- The speaker demonstrates an email prediction model, showing how it identifies an email as spam based on its features. The predicted label is confirmed to be accurate.
- The true result for the email at location 10 is verified to be '1', which indicates that the email is classified as spam.
- The model boasts an impressive accuracy rate of nearly 98%, highlighting its effectiveness in distinguishing between spam and non-spam emails.
Conclusion and Engagement
- The video wraps up with a call to action, encouraging viewers to like, comment, and subscribe if they found the content informative.