Prédire le diabète en utilisant l'apprentissage en profondeur sous Keras.

Publié: 26-12-2019

Le code suivant vous montrera comment implémenter un classificateur binaire basé sur un réseau de neurones qui peut prédire si une image contient le nombre trois ou non.

Download the datasets/Télécharger les jeux de données

PIMA INDIANS DIABETES - télécharger les jeux de données / download

L'objectif de Keras est un modèle. Le type principal de construction de modèle dans Keras est une séquence contenant une pile linéaire de plusieurs couches.

Par conséquent, vous pouvez créer une séquence et ajouter progressivement des couches au modèle dans l'ordre que vous souhaitez afin d'obtenir un calcul correct.

Une fois que vous avez défini votre modèle, vous devez compiler votre modèle afin qu'il utilise le cadre spécifique (framework) pour optimiser l'ensemble du processus de calcul, qui sera effectué sur votre modèle d'apprentissage en profondeur (deep learning). Dans ce cas, vous devez spécifier l'optimiseur et la fonction de perte, dans cet exemple, nous utiliserons le "rmsprop" et le "categorical_crossentropy". Une fois que vous avez compilé le modèle, il doit s'adapter aux données. Cela se fait un par un, un lot (batch) de données à la fois. En fait, c'est là que se déroule tout le calcul. Une fois que vous avez formé le modèle, vous pouvez l'utiliser pour faire d'autres nouvelles prédictions sur vos données.

RMSprop est l'acronyme de root mean square prop. Cet algorithme accélère la descente du gradient.
Perte d'entropie croisée catégorique,Categorical Cross-Entropy Aussi appelé perte Softmax. Il s'agit d'une activation Softmax plus une perte d'entropie croisée. Si nous utilisons cette perte, nous formerons un réseau de neurones pour produire une probabilité sur les C-classes (C>1) pour chaque entrée. Il est utilisé pour la classification multi-classes. Dans cet exemple, la sortie est soit 0 ou 1. Donc, l'entropie croisée catégorique n'est pas obligatoire à utiliser, nous aurions pu utiliser une entropie croisée binaire (un neurone de sortie). Mais à la place, nous convertirons notre vecteur de sortie en une matrice afin que le problème ressemble à une classification multiclasse. La raison est simplement basée sur un test empirique. Vous pouvez utiliser une entropie croisée binaire ou catégorique pour ce problème.

La construction de modèles d'apprentissage profond dans Keras peut être expliquée comme définissant votre modèle, ajustant votre modèle et faisant des prédictions. Pour définir le modèle, vous devez créer une séquence et ajouter plusieurs couches. Une fois cela fait, vous compilez votre modèle en spécifiant les fonctions d'optimisation et de perte. Ensuite, vous devez ajuster / former votre modèle en exécutant le modèle à l'aide de données. Enfin, vous faites des prédictions sur les nouvelles données.

L'exemple ci-dessous est composé de différentes étapes:

Lecture de l'ensemble de données à l'aide de la bibliothèque Pandas
pandas.read_csv("nsemble de données")
Affichage de la distribution des classes; Nous pouvons voir que nous avons deux classes, où la classe 0 est la classe dominante.
print(dataset.groupby('Outcome').size())
On peut également remarquer que de nombreux champs contiennent des zéros; nous résolvons ce problème
check_zero_entries() | impute_zero_field()
Visualisation
histogram, box plot, matrice de corrélation
Sélection des quatre principales caractéristiques / variables qui affectent le plus la sortie
Nous l'avons fait en utilisant SelectKBest et chi2
Division des données en ensemble de formation (70%) et ensemble de test (30%).
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.3)
Normaliser les données de façon à ce que la moyenne soit 0 et l'écart type est 1
scaler = StandardScaler().fit(X_train)
Création du modèle. Il se compose de deux couches masquées et d'une couche de sortie. Nous avons utilisé le batchNorm et le Dropout pour éviter le sur-ajustement et le décalage covariable
Dense,BatchNormalization,Dropout
Enfin, nous évaluons le modèle à l'aide du rapport de classification et de la matrice de confusion
from sklearn.metrics import classification_report, confusion_matrix
Notez que le résultat obtenu n'est pas le meilleur résultat pouvant être obtenu sur cet ensemble de données. Ceci est juste une tentative de démontrer comment les réseaux de neurones peuvent être utilisés pour une telle tâche de classification.