Maison >développement back-end >Tutoriel Python >Techniques de prétraitement des données pour les modèles ML

Techniques de prétraitement des données pour les modèles ML

DDD
DDDoriginal
2024-12-03 10:39:10535parcourir

Data Preprocessing Techniques for ML Models

Le prétraitement des données est l'acte d'effectuer certaines actions ou étapes sur un ensemble de données avant qu'il ne soit utilisé pour l'apprentissage automatique ou d'autres tâches. Le prétraitement des données consiste à nettoyer, formater ou transformer les données afin d'améliorer leur qualité ou de s'assurer qu'elles conviennent à leur objectif principal (en l'occurrence, entraîner un modèle). Un ensemble de données propres et de haute qualité améliore les performances du modèle d'apprentissage automatique.

Les problèmes courants liés aux données de mauvaise qualité incluent :

  • Valeurs manquantes
  • Formats incohérents
  • Valeurs en double
  • Fonctionnalités non pertinentes

Dans cet article, je vais vous montrer certaines des techniques courantes de prétraitement des données pour préparer des ensembles de données à utiliser dans les modèles de formation. Vous aurez besoin de connaissances de base de Python et de l'utilisation des bibliothèques et des frameworks Python.

Exigences :
Les éléments suivants sont requis pour pouvoir tirer le meilleur parti de ce guide

  • Python 3.12
  • Cahier Jupyter ou votre cahier préféré
  • Numpy
  • Pandas
  • Scipy
  • Scikit apprendre
  • Ensemble de données sur le logement à Melbourne

Vous pouvez également consulter la sortie de chaque code dans ces notebooks Jupyter sur Github.

Installation

Si vous n'avez pas encore installé Python, vous pouvez le télécharger depuis le site Web de Python et suivre les instructions pour l'installer.

Une fois Python installé, installez les bibliothèques requises

pip install numpy scipy pandas scikit-learn

Installez Jupyter Notebook.

pip install notebook

Après l'installation, démarrez Jupyter Notebook avec la commande suivante

jupyter notebook

Cela lancera Jupyter Notebook dans votre navigateur Web par défaut. Si ce n'est pas le cas, recherchez sur le terminal un lien que vous pouvez coller manuellement dans votre navigateur.

Ouvrez un nouveau notebook depuis le menu Fichier, importez les bibliothèques requises et exécutez la cellule

import numpy as np
import pandas as pd
import scipy
import sklearn

Allez sur le site Melbourne Housing Dataset et téléchargez l'ensemble de données. Chargez l'ensemble de données dans le notebook à l'aide du code suivant. Vous pouvez copier le chemin du fichier sur votre ordinateur pour le coller dans la fonction read_csv. Vous pouvez également placer le fichier csv dans le même dossier que le bloc-notes et importer le fichier comme indiqué ci-dessous.

data = pd.read_csv(r"melb_data.csv")

# View the first 5 columns of the dataset
data.head()

Divisez les données en ensembles de formation et de validation

from sklearn.model_selection import train_test_split

# Set the target
y = data['Price']

# Firstly drop categorical data types
melb_features = data.drop(['Price'], axis=1) #drop the target column

X = melb_features.select_dtypes(exclude=['object'])

# Divide data into training and validation sets
X_train, X_valid, y_train, y_valid = train_test_split(X, y, train_size=0.8, test_size=0.2, random_state=0)

Vous devez diviser les données en ensembles de formation et de validation afin d'éviter les fuites de données. Par conséquent, quelle que soit la technique de prétraitement que vous effectuez sur l'ensemble des fonctionnalités de formation, elle est la même que celle que vous effectuez sur l'ensemble des fonctionnalités de validation.

Maintenant, l'ensemble de données est prêt à être traité !

Nettoyage des données

Gestion des valeurs manquantes
Les valeurs manquantes dans un ensemble de données sont comme des trous dans un tissu censés être utilisés pour coudre une robe. Cela gâche la robe avant même qu'elle ne soit confectionnée.

Il existe 3 façons de gérer les valeurs manquantes dans un ensemble de données.

  1. Supprimez les lignes ou les colonnes avec des cellules vides
pip install numpy scipy pandas scikit-learn

Le problème avec cette méthode est que vous risquez de perdre des informations précieuses avec lesquelles vous devez entraîner votre modèle. À moins que la plupart des valeurs dans les lignes ou colonnes supprimées soient manquantes, il n'est pas nécessaire de supprimer des lignes ou des colonnes avec des cellules vides.

  1. Imputer les valeurs dans les cellules vides Vous pouvez imputer ou remplir les cellules vides avec la moyenne, la médiane ou le mode des données dans cette colonne particulière. SimpleImputer de Scikit learn sera utilisé pour imputer des valeurs dans les cellules vides
pip install notebook
  1. Imputer et notifier Comment cela fonctionne est que vous imputez des valeurs dans les cellules vides mais vous créez également une colonne qui indique que la cellule était initialement vide.
jupyter notebook

Suppression des doublons
Les cellules en double signifient des données répétées et cela affecte la précision du modèle. La seule façon de les gérer est de les laisser tomber.

import numpy as np
import pandas as pd
import scipy
import sklearn

Gérer les valeurs aberrantes
Les valeurs aberrantes sont des valeurs significativement différentes des autres valeurs de l'ensemble de données. Elles peuvent être inhabituellement élevées ou faibles par rapport à d’autres valeurs de données. Ils peuvent être dus à des erreurs de saisie ou être véritablement des valeurs aberrantes.

Il est important de traiter les valeurs aberrantes, sinon elles conduiront à des analyses de données ou à des modèles inexacts. Une méthode pour détecter les valeurs aberrantes consiste à calculer les scores z.

La façon dont cela fonctionne est que le score z est utilisé pour vérifier si un point de données est éloigné de 3 points ou plus de la valeur moyenne. Ce calcul est effectué pour chaque point de données. Si le score z d'un point de données est égal à 3 ou à une valeur supérieure, le point de données est une valeur aberrante.

data = pd.read_csv(r"melb_data.csv")

# View the first 5 columns of the dataset
data.head()

Transformation des données

Normalisation
Vous normalisez les caractéristiques afin qu'elles puissent être décrites comme une distribution normale.

Une distribution normale (également connue sous le nom de distribution gaussienne) est une distribution statistique où il existe des distances ou des distributions à peu près égales au-dessus et en dessous de la moyenne. Le graphique des points de données d'une donnée normalement distribuée forme une courbe en cloche.

L'intérêt de normaliser les données est que l'algorithme d'apprentissage automatique que vous souhaitez utiliser suppose que les données sont normalement distribuées. Un exemple est le modèle gaussien Naive Bayes.

from sklearn.model_selection import train_test_split

# Set the target
y = data['Price']

# Firstly drop categorical data types
melb_features = data.drop(['Price'], axis=1) #drop the target column

X = melb_features.select_dtypes(exclude=['object'])

# Divide data into training and validation sets
X_train, X_valid, y_train, y_valid = train_test_split(X, y, train_size=0.8, test_size=0.2, random_state=0)

Standardisation
La normalisation transforme les caractéristiques d'un ensemble de données pour avoir une moyenne de 0 et un écart type de 1. Ce processus met à l'échelle chaque caractéristique afin qu'elle ait des plages similaires dans les données. Cela garantit que chaque fonctionnalité contribue de manière égale à la formation du modèle.

Vous utilisez la standardisation lorsque :

  • Les caractéristiques de vos données sont à différentes échelles ou unités.
  • Le modèle d'apprentissage automatique que vous souhaitez utiliser est basé sur des optimisations basées sur la distance ou le gradient (par exemple, régression linéaire, régression logistique, clustering K-means).

Vous utilisez StandardScaler() de la bibliothèque sklearn pour standardiser les fonctionnalités.

pip install numpy scipy pandas scikit-learn

Conclusion

Le prétraitement des données n'est pas qu'une étape préliminaire. Cela fait partie du processus de création de modèles d’apprentissage automatique précis. Il peut également être modifié pour répondre aux besoins de l'ensemble de données avec lequel vous travaillez.

Comme pour la plupart des activités, la pratique rend parfait. Au fur et à mesure que vous continuez à prétraiter les données, vos compétences s'amélioreront ainsi que vos modèles.

J'aimerais lire vos réflexions à ce sujet ?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn