Heim >Backend-Entwicklung >Python-Tutorial >Datenvorverarbeitungstechniken für ML-Modelle

Datenvorverarbeitungstechniken für ML-Modelle

DDD
DDDOriginal
2024-12-03 10:39:10535Durchsuche

Data Preprocessing Techniques for ML Models

Datenvorverarbeitung ist die Durchführung bestimmter Aktionen oder Schritte an einem Datensatz, bevor dieser für maschinelles Lernen oder andere Aufgaben verwendet wird. Bei der Datenvorverarbeitung geht es darum, Daten zu bereinigen, zu formatieren oder umzuwandeln, um ihre Qualität zu verbessern oder sicherzustellen, dass sie für ihren Hauptzweck (in diesem Fall das Training eines Modells) geeignet sind. Ein sauberer und qualitativ hochwertiger Datensatz verbessert die Leistung des maschinellen Lernmodells.

Häufige Probleme mit minderwertigen Daten sind:

  • Fehlende Werte
  • Inkonsistente Formate
  • Doppelte Werte
  • Unrelevante Funktionen

In diesem Artikel zeige ich Ihnen einige der gängigen Datenvorverarbeitungstechniken, um Datensätze für die Verwendung in Trainingsmodellen vorzubereiten. Sie benötigen Grundkenntnisse in Python und im Umgang mit Python-Bibliotheken und -Frameworks.

Anforderungen:
Folgendes ist erforderlich, um diesen Leitfaden optimal nutzen zu können

  • Python 3.12
  • Jupyter Notebook oder Ihr Lieblingsnotizbuch
  • Numpy
  • Pandas
  • Scipy
  • Scikit lernen
  • Melbourne Housing Dataset

Sie können sich auch die Ausgabe jedes Codes in diesen Jupyter-Notizbüchern auf Github ansehen.

Aufstellen

Wenn Sie Python noch nicht installiert haben, können Sie es von der Python-Website herunterladen und den Anweisungen zur Installation folgen.

Sobald Python installiert wurde, installieren Sie die erforderlichen Bibliotheken

pip install numpy scipy pandas scikit-learn

Installieren Sie Jupyter Notebook.

pip install notebook

Starten Sie Jupyter Notebook nach der Installation mit dem folgenden Befehl

jupyter notebook

Dadurch wird Jupyter Notebook in Ihrem Standard-Webbrowser gestartet. Ist dies nicht der Fall, suchen Sie im Terminal nach einem Link, den Sie manuell in Ihren Browser einfügen können.

Öffnen Sie ein neues Notizbuch aus dem Menü „Datei“, importieren Sie die erforderlichen Bibliotheken und führen Sie die Zelle aus

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

Gehen Sie zur Website des Melbourne Housing Dataset und laden Sie den Datensatz herunter. Laden Sie den Datensatz mit dem folgenden Code in das Notebook. Sie können den Dateipfad auf Ihrem Computer kopieren, um ihn in die Funktion read_csv einzufügen. Sie können die CSV-Datei auch im selben Ordner wie das Notizbuch ablegen und die Datei wie unten gezeigt importieren.

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

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

Teilen Sie die Daten in Trainings- und Validierungssätze auf

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)

Sie müssen Daten in Trainings- und Validierungssätze aufteilen, um Datenlecks zu verhindern. Daher ist die Vorverarbeitungstechnik, die Sie für den Trainings-Feature-Satz anwenden, dieselbe wie die, die Sie für den Validierungs-Feature-Satz anwenden.

Jetzt ist der Datensatz bereit zur Verarbeitung!

Datenbereinigung

Umgang mit fehlenden Werten
Fehlende Werte in einem Datensatz sind wie Löcher in einem Stoff, der zum Nähen eines Kleides verwendet werden soll. Es verdirbt das Kleid, bevor es überhaupt hergestellt wird.

Es gibt drei Möglichkeiten, mit fehlenden Werten in einem Datensatz umzugehen.

  1. Löschen Sie die Zeilen oder Spalten mit leeren Zellen
pip install numpy scipy pandas scikit-learn

Das Problem bei dieser Methode besteht darin, dass Sie möglicherweise wertvolle Informationen verlieren, mit denen Sie Ihr Modell trainieren sollen. Sofern nicht die meisten Werte in den gelöschten Zeilen oder Spalten fehlen, besteht keine Notwendigkeit, Zeilen oder Spalten mit leeren Zellen zu löschen.

  1. Imputieren Sie Werte in die leeren Zellen Sie können den Mittelwert, den Median oder den Modus der Daten in dieser bestimmten Spalte imputieren oder die leeren Zellen damit füllen. SimpleImputer von Scikit Learn wird verwendet, um Werte in den leeren Zellen zu imputieren
pip install notebook
  1. Anrechnung und Benachrichtigung Dies funktioniert dadurch, dass Sie den leeren Zellen Werte unterstellen, aber auch eine Spalte erstellen, die angibt, dass die Zelle ursprünglich leer war.
jupyter notebook

Duplikatentfernung
Doppelte Zellen bedeuten wiederholte Daten und wirken sich auf die Modellgenauigkeit aus. Der einzige Weg, mit ihnen umzugehen, besteht darin, sie fallenzulassen.

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

Umgang mit Ausreißern
Ausreißer sind Werte, die sich deutlich von den anderen Werten im Datensatz unterscheiden. Sie können im Vergleich zu anderen Datenwerten ungewöhnlich hoch oder niedrig sein. Sie können durch Eingabefehler entstehen oder tatsächlich Ausreißer sein.

Es ist wichtig, mit Ausreißern umzugehen, da sie sonst zu ungenauen Datenanalysen oder Modellen führen. Eine Methode zur Erkennung von Ausreißern ist die Berechnung von Z-Scores.

Die Funktionsweise besteht darin, dass der Z-Score verwendet wird, um zu prüfen, ob ein Datenpunkt 3 Punkte oder mehr vom Mittelwert entfernt ist. Diese Berechnung wird für jeden Datenpunkt durchgeführt. Wenn der Z-Score für einen Datenpunkt 3 oder einen höheren Wert beträgt, ist der Datenpunkt ein Ausreißer.

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

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

Datentransformation

Normalisierung
Sie normalisieren Merkmale, sodass sie als Normalverteilung beschrieben werden können.

Eine Normalverteilung (auch Gaußsche Verteilung genannt) ist eine statistische Verteilung, bei der es ungefähr gleiche Abstände oder Verteilungen über und unter dem Mittelwert gibt. Der Graph der Datenpunkte normalverteilter Daten bildet eine Glockenkurve.

Der Sinn der Normalisierung von Daten besteht darin, dass der Algorithmus für maschinelles Lernen, den Sie verwenden möchten, davon ausgeht, dass die Daten normalverteilt sind. Ein Beispiel ist das Gaußsche Naive-Bayes-Modell.

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)

Standardisierung
Durch die Standardisierung werden die Merkmale eines Datensatzes so transformiert, dass sie einen Mittelwert von 0 und eine Standardabweichung von 1 haben. Dieser Prozess skaliert jedes Merkmal so, dass es in den Daten ähnliche Bereiche aufweist. Dadurch wird sichergestellt, dass jede Funktion gleichermaßen zum Modelltraining beiträgt.

Sie verwenden Standardisierung, wenn:

  • Die Merkmale in Ihren Daten liegen in unterschiedlichen Maßstäben oder Einheiten vor.
  • Das maschinelle Lernmodell, das Sie verwenden möchten, basiert auf distanz- oder gradientenbasierten Optimierungen (z. B. lineare Regression, logistische Regression, K-Means-Clustering).

Sie verwenden StandardScaler() aus der sklearn-Bibliothek, um Funktionen zu standardisieren.

pip install numpy scipy pandas scikit-learn

Abschluss

Die Datenvorverarbeitung ist nicht nur eine Vorstufe. Es ist Teil des Prozesses zur Erstellung genauer Modelle für maschinelles Lernen. Es kann auch an die Anforderungen des Datensatzes angepasst werden, mit dem Sie arbeiten.

Wie bei den meisten Aktivitäten macht Übung den Meister. Während Sie mit der Vorverarbeitung von Daten fortfahren, verbessern sich sowohl Ihre Fähigkeiten als auch Ihre Modelle.

Ich würde gerne Ihre Gedanken dazu lesen?

Das obige ist der detaillierte Inhalt vonDatenvorverarbeitungstechniken für ML-Modelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn