Au cours de la dernière décennie, l'apprentissage automatique est passé des laboratoires de recherche scientifiques aux applications Web et mobiles quotidiennes. L'apprentissage automatique permet à votre application d'effectuer des tâches auparavant difficiles, telles que la détection d'objets et de visages dans les images, de détecter le spam et de haine, et de générer des réponses intelligentes pour les applications de messagerie et de message.
Cependant, la réalisation de l'apprentissage automatique est fondamentalement différente de la programmation classique. Dans cet article, vous apprendrez les bases de l'apprentissage automatique et créera un modèle de base qui peut prédire les espèces de fleurs en fonction des mesures des fleurs.
La programmation classique repose sur des problèmes bien définis qui peuvent être décomposés en différentes classes, fonctions et commandes IF-Else. L'apprentissage automatique, en revanche, repose sur le développement de son comportement en fonction de l'expérience. Au lieu de fournir des règles aux modèles d'apprentissage automatique, vous les entraînez à travers des exemples.
Il existe différentes catégories d'algorithmes d'apprentissage automatique, chacun pouvant résoudre des problèmes spécifiques.
L'apprentissage supervisé convient aux questions que vous souhaitez passer des données d'entrée au résultat. Une caractéristique commune de tous les problèmes d'apprentissage supervisé est l'existence d'une situation réelle qui peut être utilisée pour tester le modèle, telles que des images marquées ou des données de vente historiques.
Les modèles d'apprentissage supervisés peuvent résoudre des problèmes de régression ou de classification. Le modèle de régression prédit la quantité (par exemple, la quantité de marchandises vendues ou le prix du stock), tandis que le problème de classification tente de déterminer les catégories de données d'entrée (par exemple, chat / chien / poisson / oiseau, fraude / non-fraude).
La classification d'images, la détection du visage, la prédiction des cours des actions et la prédiction des ventes sont des exemples de problèmes que l'apprentissage supervisé peut résoudre.
Certains algorithmes d'apprentissage supervisés populaires comprennent la régression linéaire et la régression logistique, les machines vectorielles de support, les arbres de décision et les réseaux neuronaux artificiels.
L'apprentissage non supervisé convient aux problèmes où vous avez des données mais pas des résultats, mais à la recherche de modèles. Par exemple, vous voudrez peut-être les regrouper en segments en fonction de votre similitude. C'est ce qu'on appelle le clustering dans l'apprentissage non supervisé. Alternativement, vous voudrez peut-être détecter le trafic de réseau malveillant qui s'écarte des activités normales de votre entreprise. C'est ce qu'on appelle la détection des anomalies, qui est une autre tâche d'apprentissage non supervisée. L'apprentissage non supervisé peut également être utilisé pour la réduction de la dimensionnalité, une technique pour simplifier les tâches d'apprentissage automatique en supprimant les caractéristiques non pertinentes.
Certains algorithmes d'apprentissage non supervisés populaires incluent le clustering K-Mean et l'analyse des composants principaux (PCA).
Le renforcement de l'apprentissage est une branche de l'apprentissage automatique où les agents essaient d'atteindre leurs objectifs en interagissant avec leur environnement. L'apprentissage du renforcement implique des actions, du statut et des récompenses. Les agents d'apprentissage du renforcement non formé commencent par une action aléatoire. Chaque action modifie l'état de l'environnement. Si l'agent se retrouve dans l'état souhaité, il recevra une récompense. L'agent essaie de trouver la séquence des actions et des états qui génèrent le plus de récompenses.
L'apprentissage du renforcement est utilisé dans les systèmes de recommandation, la robotique et les robots de jeu, tels que l'alphago et l'alphastar de Google.
Dans cet article, nous nous concentrerons sur l'apprentissage supervisé, car c'est la branche la plus populaire de l'apprentissage automatique et ses résultats sont plus faciles à évaluer. Nous utiliserons Python car il dispose de nombreuses fonctionnalités et bibliothèques qui prennent en charge les applications d'apprentissage automatique. Cependant, le concept général peut être appliqué à n'importe quel langage de programmation avec des bibliothèques similaires.
(Si vous n'êtes pas familier avec Python, FreeCodeCamp offre un excellent cours intensif pour vous aider à démarrer.)
L'une des bibliothèques Python couramment utilisées dans la science des données et l'apprentissage automatique est Scikit-Learn, qui fournit des implémentations d'algorithmes d'apprentissage automatique populaires. Scikit-Learn ne fait pas partie d'une installation de base Python, vous devez l'installer manuellement.
macOS et Linux sont préinstallés avec Python. Pour installer la bibliothèque Scikit-Learn, saisissez la commande suivante dans la fenêtre du terminal:
<code>pip install scikit-learn</code>
ou pour Python 3:
<code>python3 -m pip install scikit-learn</code>
Sur Microsoft Windows, vous devez d'abord installer Python. Vous pouvez obtenir la dernière version du programme d'installation de Windows Python 3 sur le site officiel. Une fois Python installé, saisissez la commande suivante dans la fenêtre de ligne de commande:
<code>python -m pip install scikit-learn</code>
Alternativement, vous pouvez installer le framework Anaconda, qui comprend le Python 3 autonome ainsi que Scikit-Learn et de nombreuses autres bibliothèques pour la science des données et l'apprentissage automatique, telles que Numpy , scipy > et matplotlib . Vous pouvez trouver les instructions d'installation pour la version personnelle gratuite d'Anaconda sur son site officiel.
La première étape de chaque projet d'apprentissage automatique consiste à comprendre le problème que vous souhaitez résoudre. La définition d'une question vous aidera à déterminer le type de données que vous devez collecter et vous donner une idée de l'algorithme d'apprentissage automatique que vous devez utiliser.
Dans notre exemple, nous voulons créer un modèle qui prédit le type de fleur basé sur les mesures des pétales et de la longueur et de la largeur des sépales.
Il s'agit d'un problème de classification de supervision. Nous devons collecter une liste de mesures de différents spécimens de fleurs et de leurs espèces correspondantes. Nous utiliserons ensuite ces données pour former et tester un modèle d'apprentissage automatique qui peut mapper des mesures aux espèces.
L'une des parties les plus délicates de l'apprentissage automatique est la collecte de données pour former votre modèle. Vous devez trouver une source qui peut collecter la quantité de données nécessaires pour former le modèle. Vous devez également vérifier la qualité de vos données, assurez-vous qu'elle représente les différentes situations que le modèle gérera et éviter de collecter des données contenant des biais cachés.
Heureusement, Scikit-Learn contient plusieurs ensembles de données de jouets qui peuvent être utilisés pour essayer différents algorithmes d'apprentissage automatique. Le "jeu de données IRIS" contienne les données exactes requises pour notre question. Nous avons juste besoin de le charger à partir de la bibliothèque.
Le code suivant charge l'ensemble de données de logement:
<code>pip install scikit-learn</code>
L'ensemble de données de l'iris contient 150 observations, chacune avec quatre mesures (iris.data) et des espèces de fleurs cibles (iris.target). Vous pouvez voir le nom de la colonne de données dans iris.feature_name:
<code>python3 -m pip install scikit-learn</code>
iris.target contient un indice numérique (0-2) de l'une des trois espèces de fleurs enregistrées dans l'ensemble de données. Les noms des espèces de fleurs se trouvent dans iris.target_Names:
<code>python -m pip install scikit-learn</code>
Avant de commencer la formation, vous devez diviser les données en un ensemble de formation et un ensemble de tests. Vous utiliserez l'ensemble de formation pour former un modèle d'apprentissage automatique et utiliser l'ensemble de tests pour vérifier sa précision.
Ceci est fait pour vous assurer que votre modèle ne survient pas les données de formation. Le sur-ajustement est lorsque votre modèle d'apprentissage automatique fonctionne bien sur les exemples de formation mais pas sur les données invisibles. Le sur-ajustement peut être causé par le choix d'un mauvais algorithme d'apprentissage automatique, une mauvaise configuration du modèle, de mauvaises données de formation ou trop peu d'exemples de formation.
Selon le type de problème que vous résolvez et la quantité de données dont vous disposez, vous devez déterminer la quantité de données que vous souhaitez attribuer à l'ensemble de tests. Habituellement, lorsque vous avez beaucoup de données (sur des dizaines de milliers d'exemples), même environ 1% des petits échantillons sont suffisants pour tester votre modèle. Pour l'ensemble de données IRIS contenant un total de 150 enregistrements, nous sélectionnerons la segmentation 75-25.
Scikit-Learn a une fonction Train_test_split qui divise l'ensemble de données dans un ensemble de données de formation et un ensemble de données de test:
<code>from sklearn.datasets import load_iris iris = load_iris() </code>
Train_test_split obtient les données et les ensembles de données cibles et renvoie deux paires d'ensembles de données utilisés pour la formation (X_Train et Y_Train) et Test (X_Test et Y_Test). Le paramètre test_size détermine le pourcentage de données à attribuer au test (entre 0 et 1). Le paramètre Stratify garantit que le réseau de formation et le réseau de test contiennent le nombre d'échantillons équilibrés de chaque catégorie. La variable Random_State existe dans de nombreuses fonctions de Scikit-Learn et est utilisée pour contrôler le générateur de nombres aléatoires et atteindre la répétabilité.
Maintenant que nos données sont prêtes, nous pouvons créer un modèle d'apprentissage automatique et les former sur l'ensemble de formation. Il existe de nombreux algorithmes d'apprentissage automatique différents qui peuvent résoudre le problème de classification que nous avons affaire. Dans notre cas, nous utiliserons l'algorithme "régression logistique", qui est très rapide et convient aux problèmes de classification simples qui ne contiennent pas trop de dimensions.
La classe LogisticRegression de Scikit-Learn implémente cet algorithme. Après l'avoir instancié, nous le formerons sur notre ensemble de formation (X_TRAIN et Y_TRAIN) en appelant la fonction d'ajustement. Cela ajustera les paramètres du modèle pour trouver la cartographie entre les valeurs mesurées et les espèces de fleurs.
<code>pip install scikit-learn</code>
Maintenant que nous avons formé le modèle, nous voulons mesurer sa précision. La classe LogisticRegression a une méthode de score qui renvoie la précision du modèle. Tout d'abord, nous mesurerons la précision du modèle sur les données de formation:
<code>python3 -m pip install scikit-learn</code>
Cela rendra environ 0,97, ce qui signifie que le modèle prédit avec précision 97% des exemples de formation, ce qui est assez bon étant donné que nous n'avons que 37 exemples d'entraînement par espèce.
Ensuite, nous vérifierons la précision du modèle sur l'ensemble de tests:
<code>python -m pip install scikit-learn</code>
Cela nous donnera environ 95% des résultats, légèrement en dessous de la précision de la formation, ce qui est naturel car ce sont des exemples que le modèle n'a jamais vu auparavant. En créant des ensembles de données plus importants ou en essayant un autre algorithme d'apprentissage automatique (tels que les machines de vecteur de support), nous pouvons être en mesure d'améliorer encore la précision de nos modèles et de combler l'écart entre la formation et les performances de test.
Enfin, nous voulons voir comment utiliser le modèle que nous avons formé sur le nouvel exemple. La classe LogisticRegression a une fonction de prédiction qui prend un tableau d'observations en entrée et renvoie la catégorie prévue. Dans le cas de notre modèle de classificateur de fleurs, nous devons lui fournir un tableau de quatre mesures (longueur sépale, largeur sépale, longueur de pétale, largeur de pétale) qui renverra un entier représentant la catégorie de la fleur:
<code>from sklearn.datasets import load_iris iris = load_iris() </code>
Félicitations! Vous avez créé votre premier modèle d'apprentissage automatique. Nous pouvons maintenant le combiner dans une application qui prend des mesures de l'utilisateur et renvoie les espèces de fleurs:
<code>print(iris.feature_names) ''' ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'] ''' </code>
J'espère que c'est votre première étape pour devenir un maître de l'apprentissage automatique. De là, vous pouvez continuer à apprendre d'autres algorithmes d'apprentissage automatique, en savoir plus sur les concepts de base de l'apprentissage automatique et continuer à apprendre des sujets plus avancés tels que les réseaux de neurones et l'apprentissage en profondeur. Avec un peu d'apprentissage et de pratique, vous pourrez créer des applications extraordinaires qui peuvent détecter des objets dans les images, traiter les commandes vocales et engager des conversations avec les utilisateurs.
Pour commencer à apprendre à utiliser Python pour l'apprentissage automatique, vous avez besoin d'une compréhension de base de la programmation Python. Il est également avantageux de se familiariser avec les bibliothèques comme Numpy, Pandas et Matplotlib. De plus, une compréhension de base des statistiques et de la probabilité est cruciale car elles forment le cœur des algorithmes d'apprentissage automatique.
Python est l'un des langages d'apprentissage automatique les plus populaires en raison de sa simplicité et de sa lisibilité. Il dispose d'une large gamme de bibliothèques et de cadres tels que Scikit-Learn, TensorFlow et Pytorch qui simplifient le développement de modèles d'apprentissage automatique. D'autres langues comme R et Java sont également utilisées dans l'apprentissage automatique, mais l'écosystème étendu de Python en fait le premier choix pour beaucoup.
Comment vérifier les performances de mon modèle d'apprentissage automatique Python?
Puis-je utiliser Python pour un apprentissage supervisé et non supervisé?
Comment gérer le sur-ajustement dans les modèles d'apprentissage automatique?
Quel est le rôle du prétraitement des données dans l'apprentissage automatique à l'aide de Python?
Comment utiliser Python pour visualiser les performances des modèles d'apprentissage automatique?
Puis-je utiliser Python pour le traitement du langage naturel (NLP)?
Vous pouvez utiliser des cadres Web tels que Flask ou Django pour déployer des modèles d'apprentissage automatique. Pour les déploiements à grande échelle, vous pouvez utiliser des plates-formes cloud telles que AWS, Google Cloud ou Azure. Ils fournissent des services pour le déploiement, la mise à l'échelle et la surveillance du modèle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!