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))