Tâche de classification avec 6 algorithmes différents utilisant Python

Voici 6 algorithmes de classification pour prédire la mortalité par insuffisance cardiaque ; Random Forest, Logistic Regression, KNN, Decision Tree, SVM et Naive Bayes pour trouver le meilleur algorithme.

Conçu dans CanvaPro

Introduction

Dans cet article de blog, j’utiliserai 6 algorithmes de classification différents pour prédire la mortalité par insuffisance cardiaque.

Pour ce faire, nous utiliserons des algorithmes de classification.

Voici les algorithmes que je vais utiliser;

  • Forêt aléatoire
  • Régression logistique
  • KN
  • Arbre de décision
  • SVM
  • Bayes naïf

Et après cela, je comparerai les résultats selon le;

  • Précision
  • Précision
  • Rappeler
  • Classement F1.

Ce sera plus long que mon autre article de blog, mais après avoir lu cet article, vous aurez probablement une connaissance approfondie des algorithmes de classification de l’apprentissage automatique et des métriques d’évaluation.

Si vous voulez en savoir plus sur les termes de Machine Learning, voici mon article de blog, Machine Learning AZ brièvement expliqué.

Commençons maintenant par les données.

Exploration des données

Voici l’ensemble de données du référentiel UCI Machine Learning, qui est un site Web open source, vous pouvez accéder à de nombreux autres ensembles de données, qui sont spécifiquement classés en fonction de la tâche (régression, classification), des types d’attributs (catégoriel, numérique), etc.

Ou si vous voulez savoir où trouver des ressources gratuites pour télécharger des ensembles de données.

Maintenant, cet ensemble de données contient les dossiers médicaux de 299 patients qui ont eu une insuffisance cardiaque et il existe 13 caractéristiques cliniques, qui sont ;

Âge (années)Anémie : Diminution des globules rouges ou de l’hémoglobine (booléen)Hypertension artérielle : Si le patient souffre d’hypertension (booléen)Créatinine phosphokinase (CPK) : Niveau de l’enzyme CPK dans le sang (mcg/L)Diabète : Si le patient est diabétique (booléen)Fraction d’éjection : Pourcentage de sang quittant le cœur à chaque contraction (pourcentage)Plaquettes : Plaquettes dans le sang (kiloplaquettes/mL)Sexe : Femme ou homme (binaire)Créatinine sérique : Taux de créatinine sérique dans le sang (mg/dL)Sodium sérique : taux de sodium sérique dans le sang (mEq/L)Tabagisme : si le patient fume ou non (booléen)Temps : période de suivi (jours)[ target ] Décès : Si le patient est décédé pendant la période de suivi (booléen)

Après avoir chargé les données, jetons un premier coup d’œil aux données.

Image de l’auteur

Pour appliquer un algorithme d’apprentissage automatique, vous devez être sûr des types de données et vérifier si les colonnes ont des valeurs non nulles ou non.

Image de l’auteur

Parfois, notre ensemble de données peut être trié avec une colonne spécifique. C’est pourquoi je vais utiliser la méthode de l’échantillon pour le savoir.

Au fait, si vous voulez voir le code source de ce projet, abonnez-vous ici et j’enverrai le PDF contenant les codes avec la description.

Maintenant, continuons. Voici les 5 lignes d’échantillons aléatoires de l’ensemble de données. Ne vous souvenez pas, si vous exécutez le code, les lignes seront complètement différentes car ces fonctions renvoient des lignes de manière aléatoire.

Image de l’auteur.

Examinons maintenant la valeur compte de l’hypertension artérielle. Je sais combien d’options existeront pour cette colonne (2) mais la vérification me fait me sentir compétent sur les données.

Image de l’auteur

Oui, il semblerait que nous ayons 105 patients qui souffrent d’hypertension artérielle et 194 patients qui n’en ont pas.

Regardons les comptes de valeur de fumer.

Images par auteur

Je pense que c’est assez avec l’exploration de données.

Faisons un peu de visualisation de données.

Bien sûr, cette partie peut être étendue en fonction des besoins de votre projet.

Voici le billet de blog, qui contient des exemples d’analyse de données avec python, notamment en utilisant la bibliothèque pandas.

Visualisation de données

Si vous souhaitez vérifier la distribution des fonctionnalités, les éliminer ou effectuer une détection des valeurs aberrantes.

Image par auteur – Graphiques de distribution

Bien sûr, ce graphique est juste informatif. Si vous voulez regarder de plus près pour détecter les valeurs aberrantes, vous devez dessiner un graphique chacun.

Image de l’auteur

Passons maintenant à la partie sélection des fonctionnalités.

Soit dit en passant, Matplotlib et seaborn sont des frameworks de visualisation de données très efficaces. Si vous voulez en savoir plus à leur sujet, voici mon article sur la visualisation de données pour l’apprentissage automatique avec Python.

Sélection de fonctionnalité

APC

Okey, ne sélectionnons pas nos fonctionnalités.

En faisant l’ACP, nous pouvons en fait trouver les n nombres d’entités pour expliquer le pourcentage x de la trame de données.

Ici, il semble qu’environ 8 fonctionnalités nous suffiront pour expliquer 80 % de l’ensemble de données.

PCA – Image de l’auteur

Graphique de corrélation

Les caractéristiques associées ruineront les performances de notre modèle, donc après avoir fait l’ACP, dessinons une carte de corrélation pour éliminer les caractéristiques corrélées.

Carte de corrélation – Image de l’auteur

Ici, vous pouvez voir que le sexe et le tabagisme semblent fortement corrélés.

Le but principal de cet article est de comparer les résultats des algorithmes de classification, c’est pourquoi je n’éliminerai pas les deux, mais vous pouvez le faire dans votre modèle.

Modélisme

Il est maintenant temps de créer votre modèle d’apprentissage automatique. Pour ce faire, nous devons d’abord diviser les données.

Train-Test Split

L’évaluation des performances de votre modèle sur les données que le modèle ne connaît pas est la partie cruciale du modèle d’apprentissage automatique. Pour ce faire, généralement, nous divisons les données 80/20.

Une autre technique encore est utilisée pour évaluer le modèle d’apprentissage automatique, qui est la validation croisée. La validation croisée est utilisée pour sélectionner le meilleur modèle d’apprentissage automatique parmi vos options. On l’appelle parfois un ensemble de développement, pour plus d’informations, vous pouvez rechercher les vidéos d’Andrew NG, qui sont très informatives.

Passons maintenant aux métriques d’évaluation du modèle.

Métriques d’évaluation du modèle

Découvrons maintenant les métriques d’évaluation du modèle de classification.

Précision

Si vous prédisez Positif, quel est le pourcentage de choix précis ?

Rappeler

Taux de vrais positifs contre tous les positifs.

Note F1

La moyenne harmonique du rappel et la précision

Pour en savoir plus sur la classification, voici mon article : Classification AZ brièvement expliquée.

Voici la formule de précision, de rappel et de score f1.

Formule de précision – Image de l’auteur
Formule de rappel – Image de l’auteur
Formule de score F1 – Image de l’auteur

Classificateur de forêt aléatoire

Notre premier algorithme de classification est la forêt aléatoire.

Après application de cet algorithme, voici les résultats.

Si vous voulez voir le code source, veuillez vous inscrire ici GRATUITEMENT.

Je vous enverrai le PDF, qui comprend le code avec une explication.

Scores d’évaluation aléatoire de la forêt – Image par l’auteur

Maintenant, continuons.

Régression logistique

Voici un autre exemple de classification.

La régression logistique utilise la fonction sigmoïde pour effectuer une classification binaire.

Image de l’auteur — Fonction sigmoïde
Scores de prédiction de régression logistique – Image par auteur

L’exactitude et la précision de celui-ci semblent plus élevées.

Continuons à chercher le meilleur modèle.

KN

Okey, appliquons maintenant le voisin le plus proche K et voyons les résultats.

Mais lors de l’application de Knn, vous devez sélectionner le “K”, qui est le numéro du voisin que vous choisirez.

Pour ce faire, utiliser une boucle semble être le meilleur moyen.

Trouver le meilleur score – Image de l’auteur

Maintenant, il semble que 2 ait la meilleure précision, tout en éliminant l’intervention humaine, découvrons le meilleur modèle en utilisant le code.

Meilleur score K – Image de l’auteur

Après avoir choisi k=2, voici la précision. Il semble que K-NN ne fonctionne pas bien. Mais peut-être devons-nous éliminer les caractéristiques corrélées de la normalisation, bien sûr, ces opérations peuvent être variées.

Scores d’évaluation KNN – Image de l’auteur

Fantastique, continuons.

Arbre de décision

Il est maintenant temps d’appliquer l’arbre de décision. Pourtant, nous devons trouver le meilleur score de profondeur pour le faire.

Ainsi, lors de l’application de notre modèle, il est important de tester différentes profondeurs.

Trouver la meilleure profondeur pour la précision – Image de l’auteur

Et pour trouver la meilleure profondeur parmi les résultats, continuons à automatiser.

Profondeur pour une meilleure précision – Image de l’auteur

Bon, maintenant nous trouvons la profondeur la plus performante. Découvrons la précision.

Scores d’évaluation de l’arbre de décision – Image par auteur

Excellent, continuons.

Soutenir la machine vectorielle

Maintenant, pour appliquer l’algorithme SVM, nous devons sélectionner le type de noyau. Ce type de noyau affectera notre résultat, nous allons donc itérer pour trouver le type de noyau, qui renvoie le meilleur modèle noté f1.

Trouver le type de noyau le plus précis – Image de l’auteur

Okey, nous allons utiliser le noyau linéaire.

Trouvons l’exactitude, la précision, le rappel et f1_score avec un noyau linéaire.

Scores d’évaluation SVM – Image par auteur

Bayes naïf

Maintenant, Naive Bayes sera notre modèle final.

Savez-vous pourquoi naïf Bayes est appelé naïf ?

Parce que l’algorithme suppose que chaque variable d’entrée est indépendante. Bien sûr, cette hypothèse est impossible lorsque l’on utilise des données réelles. Cela rend notre algorithme “naïf”.

Bon, continuons.

Scores d’évaluation de Naive Bayes – Image de l’auteur.

Dictionnaire de prédiction

Maintenant, après avoir terminé la recherche de modèle. Enregistrons des sorties entières dans une seule trame de données, ce qui nous donnera une chance d’évaluation ensemble.

Après cela, découvrons maintenant le modèle le plus précis.

Modèle le plus précis

Modèle le plus précis – Image de l’auteur

Modèle avec la plus haute précision

Modèle avec la plus haute précision – Image de l’auteur

Modèle avec le rappel le plus élevé

Modèle avec le plus haut rappel – Image de l’auteur

Modèle avec le score F1 le plus élevé

Modèle avec le score F1 le plus élevé – Image de l’auteur

Conclusion

Désormais, la métrique prévue peut différer en fonction des besoins de votre projet. Vous pourriez trouver le modèle le plus précis ou le modèle avec le rappel le plus élevé.

C’est ainsi que vous pourrez trouver le meilleur modèle, qui répondra aux besoins de votre projet.

Si vous voulez que j’envoie le code source PDF avec une explication GRATUITEMENT, veuillez vous inscrire ici.

Merci d’avoir lu mon article !

J’ai tendance à envoyer 1 ou 2 e-mails par semaine, si vous voulez aussi un Numpy CheetSheet gratuit, voici le lien pour vous !

Si vous n’êtes toujours pas membre de Medium et que vous souhaitez apprendre en lisant, voici mon lien de parrainage.

“L’apprentissage automatique est la dernière invention que l’humanité aura jamais besoin de faire.” Nick Boström