{"id":262,"date":"2025-11-21T15:24:07","date_gmt":"2025-11-21T15:24:07","guid":{"rendered":"https:\/\/codetypingpro.com\/?p=262"},"modified":"2025-11-21T15:24:07","modified_gmt":"2025-11-21T15:24:07","slug":"43-real-world-python-projects-email-classifier","status":"publish","type":"post","link":"https:\/\/codetypingpro.com\/?p=262","title":{"rendered":"43 &#8211; Real-World Python Projects &#8211; Email Classifier"},"content":{"rendered":"\n<h6 class=\"wp-block-heading\"><\/h6>\n\n\n\n<p>This project builds a complete <strong>AI-based Email Classifier<\/strong>, similar to Gmail\u2019s auto-spam and category sorting.<\/p>\n\n\n\n<p>It classifies incoming emails as:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 Spam \/ Not Spam<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 Work \/ Personal<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 Clients \/ Team \/ Promotions<\/h3>\n\n\n\n<h3 class=\"wp-block-heading\">\u2714 Urgent \/ Low Priority<\/h3>\n\n\n\n<p>You can expand the project to support multi-label classification and even auto-replies.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83e\udde0 <strong>What This Project Teaches You<\/strong><\/h1>\n\n\n\n<p>\u2714 Data preprocessing<br>\u2714 NLP text cleaning<br>\u2714 Vectorization (TF-IDF or embeddings)<br>\u2714 Machine learning models (SVM, Na\u00efve Bayes, Logistic Regression)<br>\u2714 Building an email pipeline<br>\u2714 Loading live Gmail inbox via IMAP (optional)<br>\u2714 Training + testing classifier<br>\u2714 Saving as <code>.pkl<\/code> model<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83d\udcc1 Folder Structure<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>EmailClassifier\/\n\u2502\u2500\u2500 train.py\n\u2502\u2500\u2500 classify.py\n\u2502\u2500\u2500 dataset.csv\n\u2502\u2500\u2500 model.pkl\n\u2502\u2500\u2500 vectorizer.pkl\n\u2502\u2500\u2500 requirements.txt\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83d\udce6 requirements.txt<\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>pandas\nscikit-learn\nnltk\njoblib\n<\/code><\/pre>\n\n\n\n<p>Install:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip install -r requirements.txt\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83d\udcca Example Dataset (dataset.csv)<\/h1>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>text<\/th><th>label<\/th><\/tr><\/thead><tbody><tr><td>&#8220;You won a free iPhone. Click here!&#8221;<\/td><td>spam<\/td><\/tr><tr><td>&#8220;Meeting scheduled at 3 PM.&#8221;<\/td><td>work<\/td><\/tr><tr><td>&#8220;Your Amazon order has been shipped.&#8221;<\/td><td>promotions<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83e\udde9 <strong>1. Training Script (train.py)<\/strong><\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>import pandas as pd\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.feature_extraction.text import TfidfVectorizer\nfrom sklearn.naive_bayes import MultinomialNB\nfrom sklearn.pipeline import Pipeline\nimport joblib\n\n# Load dataset\ndf = pd.read_csv(\"dataset.csv\")\n\n# Build model pipeline\npipeline = Pipeline(&#91;\n    (\"tfidf\", TfidfVectorizer(stop_words='english')),\n    (\"model\", MultinomialNB())\n])\n\n# Train model\npipeline.fit(df&#91;\"text\"], df&#91;\"label\"])\n\n# Save model\njoblib.dump(pipeline, \"model.pkl\")\nprint(\"Model saved as model.pkl\")\n<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h1 class=\"wp-block-heading\">\ud83e\udde9 <strong>2. Email Classification Script (classify.py)<\/strong><\/h1>\n\n\n\n<pre class=\"wp-block-code\"><code>import joblib\n\npipeline = joblib.load(\"model.pkl\")\n\ndef classify_email(text):\n    prediction = pipeline.predict(&#91;text])&#91;0]\n    return prediction\n\nif __name__ == \"__main__\":\n    msg = input(\"Paste email text: \")\n    print(\"\\nPredicted Category:\", classify_email(msg))<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>This project builds a complete AI-based Email Classifier, similar to Gmail\u2019s auto-spam and category sorting. It classifies incoming emails as: \u2714 Spam \/ Not Spam \u2714 Work \/ Personal \u2714 Clients \/ Team \/ Promotions \u2714 Urgent \/ Low Priority You can expand the project to support multi-label classification and even auto-replies. \ud83e\udde0 What This [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-262","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/codetypingpro.com\/index.php?rest_route=\/wp\/v2\/posts\/262","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codetypingpro.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codetypingpro.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codetypingpro.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codetypingpro.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=262"}],"version-history":[{"count":1,"href":"https:\/\/codetypingpro.com\/index.php?rest_route=\/wp\/v2\/posts\/262\/revisions"}],"predecessor-version":[{"id":263,"href":"https:\/\/codetypingpro.com\/index.php?rest_route=\/wp\/v2\/posts\/262\/revisions\/263"}],"wp:attachment":[{"href":"https:\/\/codetypingpro.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codetypingpro.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codetypingpro.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}