Détection d'anomalies dans les données sur les vins

Machine LearningMachine LearningBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons effectuer une détection d'anomalies sur un ensemble de données réelles à l'aide de scikit-learn. La détection d'anomalies est le processus d'identification de points de données qui diffèrent considérablement de la majorité des données. Les anomalies peuvent être causées par des erreurs de mesure, une corruption des données ou simplement représenter un événement rare. La détection d'anomalies est importante dans de nombreuses applications, telles que la détection de fraude, la détection d'intrusions réseau et le diagnostic médical.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Carnet de notes pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous réglerons rapidement le problème pour vous.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup(["Advanced Data Analysis and Dimensionality Reduction"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/svm("Support Vector Machines") sklearn/AdvancedDataAnalysisandDimensionalityReductionGroup -.-> sklearn/covariance("Covariance Estimators") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/svm -.-> lab-49237{{"Détection d'anomalies dans les données sur les vins"}} sklearn/covariance -.-> lab-49237{{"Détection d'anomalies dans les données sur les vins"}} sklearn/datasets -.-> lab-49237{{"Détection d'anomalies dans les données sur les vins"}} ml/sklearn -.-> lab-49237{{"Détection d'anomalies dans les données sur les vins"}} end

Importation des bibliothèques et chargement de l'ensemble de données

Nous allons commencer par importer les bibliothèques nécessaires et charger l'ensemble de données Wine à partir de scikit-learn. L'ensemble de données Wine contient des informations sur différents types de vins, y compris leurs propriétés chimiques.

import numpy as np
from sklearn.covariance import EllipticEnvelope
from sklearn.svm import OneClassSVM
import matplotlib.pyplot as plt
from sklearn.datasets import load_wine

## Chargement de l'ensemble de données
X1 = load_wine()["data"][:, [1, 2]]  ## deux grappes
X2 = load_wine()["data"][:, [6, 9]]  ## en forme de "banane"

Définir les classifieurs et les couleurs

Nous allons définir les classifieurs de détection d'anomalies que nous utiliserons dans ce laboratoire. Nous allons également définir les couleurs qui seront utilisées pour tracer les résultats.

## Définir les "classifieurs" à utiliser
classifiers = {
    "Empirical Covariance": EllipticEnvelope(support_fraction=1.0, contamination=0.25),
    "Robust Covariance (Minimum Covariance Determinant)": EllipticEnvelope(
        contamination=0.25
    ),
    "OCSVM": OneClassSVM(nu=0.25, gamma=0.35),
}
colors = ["m", "g", "b"]

Détection d'anomalies sur des données bidimensionnelles

Nous allons effectuer une détection d'anomalies sur l'ensemble de données bidimensionnelles Wine. Nous utiliserons trois classifieurs différents pour détecter les anomalies : Empirical Covariance, Robust Covariance et One-Class SVM. Nous tracerons ensuite les résultats.

## Apprenons une frontière pour la détection d'anomalies avec plusieurs classifieurs
xx1, yy1 = np.meshgrid(np.linspace(0, 6, 500), np.linspace(1, 4.5, 500))
for i, (clf_name, clf) in enumerate(classifiers.items()):
    plt.figure(1)
    clf.fit(X1)
    Z1 = clf.decision_function(np.c_[xx1.ravel(), yy1.ravel()])
    Z1 = Z1.reshape(xx1.shape)
    plt.contour(
        xx1, yy1, Z1, levels=[0], linewidths=2, colors=colors[i]
    )

## Tracez les résultats (= forme du nuage de points de données)
plt.figure(1)  ## deux grappes
plt.title("Détection d'anomalies sur un ensemble de données réelles (reconnaissance des vins)")
plt.scatter(X1[:, 0], X1[:, 1], color="black")
plt.xlim((xx1.min(), xx1.max()))
plt.ylim((yy1.min(), yy1.max()))
plt.ylabel("cendres")
plt.xlabel("acide malique")
plt.show()

Détection d'anomalies sur des données complexes

Nous allons effectuer une détection d'anomalies sur l'ensemble de données Wine en forme de "banane". Nous utiliserons les mêmes trois classifieurs que précédemment et tracerons les résultats.

## Apprenons une frontière pour la détection d'anomalies avec plusieurs classifieurs
xx2, yy2 = np.meshgrid(np.linspace(-1, 5.5, 500), np.linspace(-2.5, 19, 500))
for i, (clf_name, clf) in enumerate(classifiers.items()):
    plt.figure(2)
    clf.fit(X2)
    Z2 = clf.decision_function(np.c_[xx2.ravel(), yy2.ravel()])
    Z2 = Z2.reshape(xx2.shape)
    plt.contour(
        xx2, yy2, Z2, levels=[0], linewidths=2, colors=colors[i]
    )

## Tracez les résultats (= forme du nuage de points de données)
plt.figure(2)  ## forme de "banane"
plt.title("Détection d'anomalies sur un ensemble de données réelles (reconnaissance des vins)")
plt.scatter(X2[:, 0], X2[:, 1], color="black")
plt.xlim((xx2.min(), xx2.max()))
plt.ylim((yy2.min(), yy2.max()))
plt.ylabel("intensité de couleur")
plt.xlabel("flavonoïdes")
plt.show()

Sommaire

Dans ce laboratoire, nous avons effectué une détection d'anomalies sur des ensembles de données bidimensionnelles Wine à l'aide de scikit-learn. Nous avons utilisé trois classifieurs différents pour détecter les anomalies : Empirical Covariance, Robust Covariance et One-Class SVM. Nous avons ensuite tracé les résultats pour visualiser les données et les anomalies détectées. La détection d'anomalies est une tâche importante dans l'analyse de données, et scikit-learn fournit plusieurs outils pour effectuer cette tâche efficacement.