0% ont trouvé ce document utile (0 vote)
25 vues8 pages

TP1

Ce document présente un TP utilisant des techniques de machine learning pour analyser les données du Titanic. Il inclut le prétraitement des données, la détection d'anomalies avec Isolation Forest, et l'entraînement de modèles de régression logistique et de Random Forest avec optimisation des hyperparamètres. Les performances des modèles sont évaluées à l'aide de la précision et de rapports de classification.

Transféré par

oussamajhimi123
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
25 vues8 pages

TP1

Ce document présente un TP utilisant des techniques de machine learning pour analyser les données du Titanic. Il inclut le prétraitement des données, la détection d'anomalies avec Isolation Forest, et l'entraînement de modèles de régression logistique et de Random Forest avec optimisation des hyperparamètres. Les performances des modèles sont évaluées à l'aide de la précision et de rapports de classification.

Transféré par

oussamajhimi123
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd

TP1

import pandas as pd

import numpy as np

from sklearn.model_selection import train_test_split, GridSearchCV

from [Link] import RandomForestClassifier

from [Link] import StandardScaler

from [Link] import accuracy_score, classification_report

# Monter Google Drive pour accéder aux fichiers

from [Link] import drive

[Link]('/content/drive')

# Charger le fichier Titanic en tant que DataFrame

data = pd.read_csv('/content/drive/MyDrive/Colab Notebooks/[Link]')

print([Link]()) # Afficher les premières lignes du fichier

print([Link]()) # Obtenir des informations générales sur les colonnes et les types de données
TP1

# Vérifier les valeurs manquantes

print([Link]().sum())

# Remplir les valeurs manquantes dans 'Age' avec la médiane

data['Age'].fillna(data['Age'].median(), inplace=True)

# Remplir les valeurs manquantes dans 'Embarked' avec la valeur la plus fréquente (mode)

data['Embarked'].fillna(data['Embarked'].mode()[0], inplace=True)
TP1
# Supprimer les colonnes inutiles

[Link](columns=['Cabin', 'Name', 'Ticket', 'PassengerId'], inplace=True)

# Transformer les variables catégoriques en variables indicatrices

data = pd.get_dummies(data, drop_first=True)

# Vérifier les modifications apportées

[Link]()

# Isolation Forest pour détecter les anomalies

from [Link] import IsolationForest

# Initialiser le modèle Isolation Forest

iso_forest = IsolationForest(contamination=0.05, random_state=42)

# Ajuster le modèle sur les données (en excluant 'Survived' si elle est présente)

X = [Link]('Survived', axis=1, errors='ignore')

iso_forest.fit(X)

# Prédire les anomalies (1 = normal, -1 = anomalie)


TP1
data['anomaly'] = iso_forest.predict(X)

# Compter le nombre d'anomalies détectées

anomalies = data[data['anomaly'] == -1]

print(f"Nombre d'anomalies détectées : {len(anomalies)}")

# Afficher les premières anomalies détectées

[Link]()

# Visualisation des anomalies à l'aide d'un scatter plot

import [Link] as plt

[Link](data['Age'], data['Fare'], color='blue', label='Données normales')

[Link](anomalies['Age'], anomalies['Fare'], color='red', label='Anomalies')

[Link]('Age')

[Link]('Fare')

[Link]()

[Link]()
TP1

# Séparer les données en X (features) et y (cible)

X = [Link]('Survived', axis=1)

y = data['Survived']

# Standardiser les données

scaler = StandardScaler()

X = scaler.fit_transform(X)

# Diviser les données en ensembles d'entraînement et de test

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Initialiser et entraîner un modèle de régression logistique

from sklearn.linear_model import LogisticRegression

model = LogisticRegression(max_iter=200)

[Link](X_train, y_train)
TP1

#[Link](X_train,y_train)

#y_pred=[Link](X_test)

# Prédictions sur l'ensemble de test

y_pred = [Link](X_test)

# Évaluer la performance du modèle

accuracy = accuracy_score(y_test, y_pred)

print(f"Accuracy du modèle : {accuracy * 100:.2f}%")

print("Rapport de classification :\n", classification_report(y_test, y_pred))

print(f'Precision du modele : {accuracy * 100:.2f}%')

print("rapport de classification :\n",classification_report(y_test,y_pred))


TP1

# Définir une grille d'hyperparamètres pour Random Forest

param_grid = {

'n_estimators': [50, 100, 200],

'max_depth': [None, 10, 20, 30],

'min_samples_split': [2, 5, 10]

# Utiliser GridSearchCV pour optimiser les hyperparamètres

grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5, scoring='accuracy',


n_jobs=-1)

grid_search.fit(X_train, y_train)

# Afficher les meilleurs hyperparamètres trouvés

print(f"Meilleurs hyperparamètres : {grid_search.best_params_}")

# Prédictions avec le modèle optimisé

y_pred_optimized = grid_search.best_estimator_.predict(X_test)
TP1
# Évaluer la performance du modèle optimisé

accuracy_optimized = accuracy_score(y_test, y_pred_optimized)

print(f"Précision du modèle optimisé : {accuracy_optimized * 100:.2f}%")

print("Rapport de classification après optimisation :\n", classification_report(y_test,


y_pred_optimized))

Vous aimerez peut-être aussi