Scikit learn - Apprentissage automatique avec Python



Le blog Scikit learn vous présentera l'apprentissage automatique en python. Il inclut un cas d'utilisation dans lequel nous mettrons en œuvre une régression logistique à l'aide de scikit learn.

Dans ce blog, nous discuterons de Scikit learn in python. Avant de parler de Scikit learn, il faut comprendre le concept de machine learninget doit savoir utiliser . Avec l'apprentissage automatique, vous n'avez pas à collecter vos informations manuellement. Vous avez juste besoin d'un algorithme et la machine fera le reste pour vous! N'est-ce pas excitant? Scikit learn est l'une des attractions où nous pouvons mettre en œuvre l'apprentissage automatique à l'aide de Python. Ilest une bibliothèque d'apprentissage automatique gratuite qui contient des outils simples et efficaces à des fins d'analyse de données et d'exploration de données.Je vais vous présenter les sujets suivants, qui serviront de bases pour les prochains blogs:

Qu'est-ce que l'apprentissage automatique?

L'apprentissage automatique est un type d'intelligence artificielle qui permet aux applications logicielles d'apprendre à partir des données et de prédire plus précisément les résultats sans intervention humaine. Mais comment cela se produit-il? Pour cela, la machine doit être formée sur certaines données et sur cette base, elle détectera un modèle pour créer un modèle.Ce processus consistant à acquérir des connaissances à partir des données et à fournir des informations puissantes concerne uniquement l'apprentissage automatique. Reportez-vous à l'image ci-dessous pour mieux comprendre son fonctionnement:





MachineLearning - Scikit Learn - Edureka

À l'aide des données, le système apprend un algorithme puis l'utilise pour créer un modèle prédictif. Plus tard, nous ajustons le modèle ou nous améliorons la précision du modèle en utilisant les données de retour. En utilisant ces données de retour, nous ajustons le modèle et prédisons l'action sur le nouvel ensemble de données. Nous allonsdiscuter d'un cas d'utilisation de l'une des approches de l'algorithme où nous formerons et testerons les données qui vous aideront à vous donner une meilleure idée de si cela conviendra ou non à votre problème particulier.



hashmap vs hashtable en java

Ensuite, il existe trois types d'apprentissage automatique:

    • Enseignement supervisé : Il s'agit d'un processus d'un algorithme apprenant à partir de l'ensemble de données d'entraînement. L'apprentissage supervisé est l'endroit où vous générez une fonction de mappage entre la variable d'entrée (X) et une variable de sortie (Y) et vous utilisez un algorithme pour générer une fonction entre elles. Il est également connu sous le nom de modélisation prédictive qui fait référence à un processus de prédiction à l'aide des données. Certains des algorithmes incluent la régression linéaire, la régression logistique, l'arbre de décision, la forêt aléatoire et le classificateur Naive Bayes. Nous discuterons plus en détail d'un cas d'utilisation de l'apprentissage supervisé où nous formons la machine en utilisant régression logistique .
    • Apprentissage non supervisé : Il s'agit d'un processus dans lequel un modèle est formé à l'aide d'une information qui n'est pas étiquetée. Ce processus peut être utilisé pour regrouper les données d'entrée en classes sur la base de leurs propriétés statistiques. L'apprentissage non supervisé est également appelé canalyse lustrante qui signifie le regroupement d'objets en fonction des informations trouvées dans les données décrivant les objets ou leur relation. L'objectif est que les objets d'un groupe soient similaires les uns aux autres mais différents des objets d'un autre groupe. Certains des algorithmes incluent le clustering K-means, le clustering hiérarchique, etc.
    • Apprentissage par renforcement: L'apprentissage par renforcement est un apprentissage en interagissant avec un espace ou un environnement.Un agent RL apprend des conséquences de ses actions, plutôt que d'être enseigné explicitement. Il sélectionne ses actions sur la base de ses expériences passées (exploitation) et aussi par de nouveaux choix (exploration).

Présentation de Scikit Learn

Scikit learn est une bibliothèque utilisée pour effectuer un apprentissage automatique en Python. Scikit learn est une bibliothèque open source qui est sous licence BSD et est réutilisable dans divers contextes, encourageant une utilisation académique et commerciale. Il fournit une gamme d'algorithmes d'apprentissage supervisés et non supervisés en Python.Scikit learn se compose d'algorithmes et de bibliothèques populaires. En dehors de cela, il contient également les packages suivants:



  • NumPy
  • Matplotlib
  • SciPy (Python scientifique)

Pour implémenter Scikit learn, nous devons d'abord importer les packages ci-dessus. Si vous n'êtes pas familier avec ces bibliothèques, vous pouvez consulter mes précédents blogs sur et . Vous pouvez télécharger ces deux packages en utilisant la ligne de commande ou si vous utilisez POuiCharm, vous pouvez l'installer directement en accédant à vos paramètres de la même manière que vous le faites pour les autres packages.

Ensuite, d'une manière similaire, vous devez importer Sklearn.Scikit learn est basé sur SciPy (Scientific Python) qui doit être installé avant de pouvoir utiliser Scikit-learn. Vous pouvez vous y référer site Internet pour télécharger le même. De plus, installez le package Scipy et wheel s'il n'est pas présent, vous pouvez taper la commande ci-dessous:

pip installer scipy

Je l'ai déjà téléchargé et installé, vous pouvez vous référer à la capture d'écran ci-dessous pour toute confusion.

Après avoir importé les bibliothèques ci-dessus, approfondissons et comprenons comment exactement Scikit learn est utilisé.

Scikit learn est fourni avec des exemples de jeux de données, tels que iris et chiffres . Vous pouvez importer les ensembles de données et jouer avec eux. Après cela, vous devez importer SVM qui signifie Support Vector Machine. SVM est une forme d'apprentissage automatique qui est utilisée pour analyser des données.

Prenons un exemple où nous prendrons chiffres ensemble de données et il classera les nombres pour nous, par exemple- 0 1 2 3 4 5 6 7 8 9. Reportez-vous au code ci-dessous:

import matplotlib.pyplot as plt depuis sklearn importer des ensembles de données depuis sklearn import svm digits = datasets.load_digits () print (digits.data)

Production -

[[0. 0. 5. ..., 0. 0. 0.] [0. 0. 0. ..., 10. 0. 0.] [0. 0. 0. ..., 16. 9. 0.] ..., [0. 0. 1. ..., 6. 0. 0.] [0. 0. 2. ..., 12. 0. 0.] [0. 0. 10. ..., 12. 1. 0.]]

Ici, nous venons d'importer les bibliothèques, SVM, les jeux de données et d'imprimer les données. C'est un long tableau de données numériques où les données sont stockées. Il donne accès aux fonctionnalités qui peuvent être utilisées pour classer les chiffres échantillons. Ensuite, vous pouvez également essayer d'autres opérations telles que la cible, les images, etc. Prenons l'exemple ci-dessous:

import matplotlib.pyplot as plt depuis sklearn importer des ensembles de données depuis sklearn import svm digits = datasets.load_digits () print (digits.target) print (digits.images [0])

Production -

[0 1 2 ..., 8 9 8] // cible des données [[0. 0. 5. 13. 9. 1. 0. 0.] // image des données [0. 0. 13. 15. 10. 15. 5. 0.] [0. 3. 15. 2. 0. 11. 8. 0.] [0. 4. 12. 0. 0. 8. 8. 0.] [0. 5. 8. 0. 0. 9. 8. 0.] [0. 4. 11. 0. 1. 12. 7. 0.] [0. 2. 14. 5. 10. 12. 0. 0. ] [0. 0. 6. 13. 10. 0. 0. 0.]]

Comme vous pouvez le voir ci-dessus, les chiffres cibles et l'image des chiffres sont imprimés. digits.target donne la vérité fondamentale pour le chiffre ensemble de données, c'est-à-dire le numéro correspondant à chaque image numérique. Ensuite, les données sont toujours un tableau 2D qui a une forme (n_samples, n_features), bien que les données d'origine aient pu avoir une forme différente. Mais dans le cas des chiffres, chaque échantillon original est une image de forme (8,8) et est accessible en utilisant chiffres . image.

Apprentissage et prédiction

Ensuite, dans Scikit learn, nous avons utilisé un ensemble de données (échantillon de 10 classes possibles, chiffres de zéro à neuf) et nous devons prédire les chiffres lorsqu'une image est donnée. Pour prédire la classe, nous avons besoin d'un estimateur ce qui permet de prédire les classes auxquelles appartiennent les échantillons invisibles. Dans Scikit learn, nous avons un estimateur pour la classification qui est un objet python qui implémente les méthodes ajustement (x, y) et prédire (T). Prenons l'exemple ci-dessous:

import matplotlib.pyplot as plt from sklearn import datasets from sklearn import svm digits = datasets.load_digits () // dataset clf = svm.SVC (gamma = 0.001, C = 100) print (len (digits.data)) x, y = digits.data [: - 1], digits.target [: - 1] // former les données clf.fit (x, y) print ('Prediction:', clf.predict (digits.data [-1]) ) // prédire les données plt.imshow (digits.images [-1], cmap = plt.cm.gray_r, interpolation = 'plus proche') plt.show ()

Production -

1796
Prédiction: [8]


Dans l'exemple ci-dessus, nous avions d'abord trouvé la longueur et chargé 1796 exemples. Ensuite, nous avons utilisé ces données comme données d'apprentissage, où nous devons tester le dernier élément et le premier élément négatif. En outre, nous devons vérifier si la machine a prédit les bonnes données ou non. Pour cela, nous avions utilisé Matplotlib où nous avions affiché l'image des chiffres.Donc, pour conclure, vous avez des données numériques, vous avez la cible, vous l'avez adaptée et vous la prédisez et donc vous êtes prêt à partir! C'est vraiment rapide et facile, n'est-ce pas?

la chaîne est mutable ou immuable en java

Vous pouvez également visualiser les étiquettes cibles avec une image, reportez-vous simplement au code ci-dessous:

import matplotlib.pyplot as plt from sklearn import datasets from sklearn import svm digits = datasets.load_digits () # Joindre les images et les étiquettes cibles dans une liste images_and_labels = list (zip (digits.images, digits.target)) # pour chaque élément dans la liste d'index, (image, label) dans enumerate (images_and_labels [: 8]): # initialise un sous-tracé de 2X4 à la i + 1-ème position plt.subplot (2, 4, index + 1) # Afficher les images dans tous les sous-graphiques plt.imshow (image, cmap = plt.cm.gray_r, interpolation = 'plus proche') # Ajouter un titre à chaque sous-graphique plt.title ('Training:' + str (label)) # Afficher le graphique plt. montrer()

Production-


Comme vous pouvez le voir dans le code ci-dessus, nous avons utilisé la fonction «zip» pour joindre les images et les étiquettes cibles dans une liste, puis l’enregistrer dans une variable, par exemple images_and_labels. Après cela, nous avons indexé les huit premiers éléments dans une grille de 2 par 4 à chaque position. Après cela, nous venons d'afficher les images à l'aide de Matplotlib et avons ajouté le titre en tant que «formation».

Cas d'utilisation - Prédiction à l'aide de la régression logistique

Énoncé du problème - Un constructeur automobile a lancé un nouveau SUV sur le marché. En utilisant les données précédentes sur les ventes de leurs SUV, ils veulent prédire la catégorie de personnes qui pourraient être intéressées par cet achat.

Pour cela, voyons un ensemble de données où j'ai UserId, sexe, âge, salaire estimé et acheté sous forme de colonnes. Ceci est juste un exemple de jeu de données, vous pouvez télécharger le jeu de données complet à partir de Ici . Une fois que nous importons les données dans pyCharm, cela ressemble un peu à ceci.

Maintenant, comprenons ces données. Comme vous pouvez le voir dans l'ensemble de données ci-dessus, nous avons des catégories telles que l'identifiant, le sexe, l'âge, etc. Maintenant, sur la base de ces catégories, nous allons former notre machine et prédire le non. d'achats. Alors ici, nous avons variables indépendantes comme «âge», «salaire attendu» et variable dépendante comme «acheté». Nous allons maintenant appliquer l'apprentissage supervisé, c'est-à-dire algorithme de régression logistique pour connaître le nombre d'achat en utilisant les données existantes.

Voyons d'abord un aperçu de la régression logistique.

Régression logistique - La régression logistique produit des résultats dans un format binaire qui est utilisé pour prédire le résultat d'une variable dépendante catégorielle. Il est le plus largement utilisé lorsque la variable dépendante est binaire, c'est-à-dire que le nombre de catégories disponibles est de deux, par exemple, les résultats habituels de la régression logistique sont -

  • Oui et non
  • Vrai et faux
  • Haut et bas
  • Réussir et échouer

Maintenant, pour commencer avec le code, nous allons d'abord importer ces bibliothèques - Numpy, Matplotlib et Pandas. Il est assez facile d'importer des pandas dans Pycharm en suivant les étapes ci-dessous:

Paramètres -> Ajouter un package -> Pandas -> Installer

Après cela, nous importerons l'ensemble de données et séparerons la variable dépendante (achetée) et la variable indépendante (âge, salaire) par:

dataset = pd.read_csv ('Social_Network_Ads.csv') X = dataset.iloc [:, [2, 3]]. values ​​y = dataset.iloc [:, 4] .values ​​print (X) print (y)

La prochaine étape serait de former et de tester les données. Une stratégie courante consiste à prendre toutes les données étiquetées et à les diviser en sous-ensembles de formation et de test, ce qui est généralement pris avec un ratio de 70 à 80% pour le sous-ensemble de formation et de 20 à 30% pour le sous-ensemble de test. Par conséquent, nous avons créé des ensembles de formation et de test de création à l'aide de cross_validation.

depuis sklearn.cross_validation import train_test_split X_train, X_test, y_train, y_test = train_test_split (X, y, test_size = 0.25, random_state = 0)

Nous pouvons également mettre à l'échelle les valeurs d'entrée pour de meilleures performances en utilisant StandarScaler comme indiqué ci-dessous:

depuis sklearn.preprocessing import StandardScaler sc = StandardScaler () X_train = sc.fit_transform (X_train) X_test = sc.transform (X_test)

Nous allons maintenant créer notre modèle de régression logistique.

de sklearn.linear_model import LogisticRegression classifier = LogisticRegression (random_state = 0) classifier.fit (X_train, y_train)

Nous pouvons l'utiliser et prédire les résultats de notre ensemble de tests.

y_pred = classificateur.predict (X_test)

Maintenant, nous pouvons vérifier combien de prédictions étaient exactes et combien n'utilisaient pas matrice de confusion . Définissons Y comme des instances positives et N comme des instances négatives. Les quatre résultats sont formulés dans une matrice de confusion 2 * 2, comme représenté ci-dessous:

depuis sklearn.metrics import confusion_matrix cm = confusion_matrix (y_test, y_pred) print (cm)

Production-

[[65 3] [8 24]]

Ensuite, sur la base de notre matrice de confusion, nous pouvons calculer la précision. Donc, dans notre exemple ci-dessus, la précision serait:

= TP + TN / FN + FP

= 65 + 24/65 +3+ 8 + 24

= 89%

Nous l'avons fait manuellement! Voyons maintenant comment la machine calcule la même chose pour nous, pour cela nous avons une fonction intégrée «precision_score» qui calcule la précision et l’imprime, comme indiqué ci-dessous:

à partir de sklearn.metrics import precision_score // importer la fonction precision_score print (precision_score (y_test, y_pred) * 100) // imprime la précision

Production -

89,0

Hourra! Nous avons ainsi implémenté avec succès la régression logistique à l'aide de Scikit learn avec une précision de 89%.

Cliquez ici pour obtenir la source complète de la prédiction ci-dessus en utilisant la bibliothèque d'apprentissage Python Scikit.

Avec cela, nous n'avons couvert qu'un des nombreux algorithmes populaires que python a à offrir.Nous avons couvert toutes les bases de Scikit apprendre la bibliothèque,afin que vous puissiez commencer à pratiquer maintenant. Plus vous pratiquez, plus vous apprendrez. Restez à l'écoute pour d'autres blogs de tutoriels python!

meilleure idée java pour les débutants

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de ce blog «Scikit learn» et nous vous répondrons dans les plus brefs délais. Pour acquérir une connaissance approfondie de Python et de ses différentes applications, vous pouvez pour une formation en ligne en direct avec une assistance 24/7 et un accès à vie.