0% ont trouvé ce document utile (0 vote)
67 vues3 pages

Prétraitement pour Naïve Bayes Spam

Transféré par

youedtv
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
67 vues3 pages

Prétraitement pour Naïve Bayes Spam

Transféré par

youedtv
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

TP2 : Naïve Bayes Classifier

Objectifs :

• Comprendre l'application pratique du Naïve Bayes.


• Implémenter un classificateur pour différencier les e-mails normaux des spams.

Prérequis :

• google colab
• Pandas ,Dataframe, Matplotlib, Seaborn, Sickit-learn

Données :

• Nous allons utiliser le dataset "SMS Spam Collection Dataset"


• Chaque message est étiqueté comme "ham" (non-spam) ou "spam".

Étapes du TP :

Étape 1 : Charger le dataset

- Importer les packages nécessaires :

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
from [Link] import accuracy_score, classification_report, confusion_matrix
import seaborn as sns
import [Link] as plt

- Le dataset doit être un fichier CSV avec deux colonnes : "label" (ham/spam) et "message"
(contenu de l'e-mail ou du SMS) :

df = pd.read_csv('/content/[Link]', encoding='ISO-8859-1', usecols=[0, 1], names=['label', 'message'],


header=0)
[Link]()

Étape 2 : Prétraitement des données

-vérifier si il ya des valeur manquantes :

print([Link]().sum())
- Convertir les labels "ham" et "spam" en valeurs numériques :

df['label'] = df['label'].map({'ham': 0, 'spam': 1})

- Afficher la répartition des classes :

print("\nRépartition des classes :")


print(df['label'].value_counts())
[Link](data=df, x='label', palette='viridis')
[Link]("Distribution des classes (ham vs spam)")
[Link]()

Étape 3 : Séparer les données en ensembles d'entraînement et de test

X = df['message']
y = df['label']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2,
random_state=42)

Étape 4 : Vectorisation des messages

# On utilise Bag of Words (CountVectorizer) ou TF-IDF


vectorizer = CountVectorizer(stop_words='english')
# Pour utiliser TF-IDF, remplacez CountVectorizer par TfidfVectorizer :
# vectorizer = TfidfVectorizer(stop_words='english')
X_train_vec = vectorizer.fit_transform(X_train)
X_test_vec = [Link](X_test)

Étape 5 : Entraîner le modèle Naïve Bayes

model = MultinomialNB()
[Link](X_train_vec, y_train)

Étape 6 : Prédictions

y_pred = [Link](X_test_vec)

Étape 7 : Évaluation du modèle

-accuracy et classification_report :

print("\nÉvaluation du modèle :")


print(f"Accuracy : {accuracy_score(y_test, y_pred):.2f}")
print("\nClassification Report :")
print(classification_report(y_test, y_pred))
-Matrice de confusion

conf_matrix = confusion_matrix(y_test, y_pred)


conf_matrix_percentage = conf_matrix / conf_matrix.sum(axis=1)[:,
[Link]] * 100
[Link](conf_matrix_percentage, annot=True, fmt=".2f", cmap="Blues",
xticklabels=['Ham', 'Spam'], yticklabels=['Ham', 'Spam'])
[Link]("Matrice de confusion en pourcentage")
[Link]("Prédictions")
[Link]("Vérités")
[Link]()

Vous aimerez peut-être aussi