Webinar Workflow ML
Objectif: Prédire le diagnostic du patient
Donnés: Les données proviennent de Kaggle
Méthologie: SVM
Implémentation
- Importation des données
- Exploration
- Conversion des variables catégorielles en numérique
- Séparation du jeu de données
- Entraînement
- Sélection de modèle
Voici les principaux outils que nous utilisons pour l'implémentation - Python - Pandas - Scitkit-learn
Librairies
import pickle
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import LabelEncoder, StandardScaler
from sklearn.svm import LinearSVC, SVC
from sklearn.ensemble import RandomForestClassifier, BaggingClassifier, GradientBoostingClassifier
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, confusion_matrix
Importation des données
# Read data `Prostate_Cancer.csv` from my github. Original dataset come from Kaggle [https://www.kaggle.com/sajidsaifi/prostate-cancer]
try:
data = pd.read_csv("Prostate_Cancer.csv")
except:
data = pd.read_csv('https://raw.githubusercontent.com/joekakone/datasets/master/datasets/Prostate_Cancer.csv')
# Show the 10 first rows
data.head(10)
Le tableau contient 100
lignes et 10
colonnes. La première colonne id
représente les identifiants des patient, elle ne nous sera pas utile dans notre travail, nous allons l'ignorer dans la suite. La colonnes diagnosis_result
représnet quant à elle le résultat du diagnostic du patient, c'est cette valeur que nous allons prédire. Les autres colonnes décrivent l'état du patient, elles nous serviront çà prédire lle diagnostic du patient.
Nettoyage
Dans notre tableau, il n'y a pas de données manquantes. Généralement ce n'est pas le cas et il faudra corriger cela.
Exploration
Distribution de la variable objectif
Distribution des variables explicatives
Distribution des variables explicatives par la variable objectif
On constate une grande variation de perimeter
et area
en fonction de diagnosis_result
fig = plt.figure(figsize=(16, 6))
fig.add_subplot(1, 2, 1)
sns.distplot(x=data[data["diagnosis_result"]=="M"]["perimeter"])
sns.distplot(x=data[data["diagnosis_result"]=="B"]["perimeter"])
plt.title("perimeter")
fig.add_subplot(1, 2, 2)
sns.distplot(x=data[data["diagnosis_result"]=="M"]["area"])
sns.distplot(x=data[data["diagnosis_result"]=="B"]["area"])
plt.yticks([])
plt.title("area")
plt.show()
Reagrdons ce qu'il en est des correlations éventuelles entre les variables explicatives.