Imputation von fehlenden Werten

Machine LearningMachine LearningBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Viele Echtwelt-Datenmengen enthalten fehlende Werte, was Probleme verursachen kann, wenn maschinelle Lernalgorithmen verwendet werden, die vollständige und numerische Daten voraussetzen. In solchen Fällen ist es wichtig, fehlende Werte angemessen zu behandeln, um die verfügbaren Daten optimal zu nutzen. Eine häufige Strategie ist die Imputation, die darin besteht, die fehlenden Werte auf der Grundlage des bekannten Teils der Daten auszufüllen.

In diesem Tutorial werden wir verschiedene Strategien zur Imputation fehlender Werte mit scikit-learn, einer beliebten Python-Bibliothek für maschinelles Lernen, erkunden.

VM-Tipps

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/DataPreprocessingandFeatureEngineeringGroup(["Data Preprocessing and Feature Engineering"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/DataPreprocessingandFeatureEngineeringGroup -.-> sklearn/impute("Impute") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/impute -.-> lab-71131{{"Imputation von fehlenden Werten"}} ml/sklearn -.-> lab-71131{{"Imputation von fehlenden Werten"}} end

Importieren der erforderlichen Module

Zunächst müssen wir die erforderlichen Module aus der scikit-learn-Bibliothek importieren. Wir werden die Klasse SimpleImputer für die eindimensionale Merkmalsimputation und die Klasse IterativeImputer für die mehrdimensionale Merkmalsimputation verwenden.

import numpy as np
from sklearn.impute import SimpleImputer, IterativeImputer

Eindeutige Merkmalsimputation mit SimpleImputer

Die Klasse SimpleImputer bietet grundlegende Strategien zur Imputation fehlender Werte auf eindimensionale Weise. Wir können verschiedene Strategien wählen, wie zum Beispiel das Ersetzen fehlender Werte mit einem konstanten Wert oder das Verwenden des Mittelwerts, des Medianwerts oder des häufigsten Werts jeder Spalte, um die fehlenden Werte zu imputieren.

Lassen Sie uns mit der Mittelwertstrategie beginnen. Wir werden eine Instanz von SimpleImputer erstellen und sie auf unseren Daten anpassen, um die Imputationsstrategie zu lernen. Anschließend können wir die transform-Methode verwenden, um die fehlenden Werte auf der Grundlage der gelernten Strategie zu imputieren.

imp = SimpleImputer(strategy='mean')
X = [[1, 2], [np.nan, 3], [7, 6]]
imp.fit(X)
X_test = [[np.nan, 2], [6, np.nan], [7, 6]]
imputed_X_test = imp.transform(X_test)

Mehrdimensionale Merkmalsimputation mit IterativeImputer

Die Klasse IterativeImputer ist ein fortgeschrittener Ansatz zur Imputation fehlender Werte. Sie modelliert jedes Merkmal mit fehlenden Werten als Funktion anderer Merkmale und verwendet diese Schätzung zur Imputation. Sie lernt iterativ die Beziehungen zwischen den Merkmalen und imputiert die fehlenden Werte auf der Grundlage dieser Beziehungen.

imp = IterativeImputer()
X = [[1, 2], [3, 6], [4, 8], [np.nan, 3], [7, np.nan]]
imp.fit(X)
X_test = [[np.nan, 2], [6, np.nan], [np.nan, 6]]
imputed_X_test = imp.transform(X_test)

Imputation mit den nächsten Nachbarn mit KNNImputer

Die Klasse KNNImputer bietet eine Imputation zur Befüllung von fehlenden Werten unter Verwendung des k - nächsten - Nachbarn - Ansatzes. Sie sucht die nächsten Nachbarn für jede Probe mit fehlenden Werten und imputiert die fehlenden Merkmalswerte auf der Grundlage der Werte der Nachbarn.

from sklearn.impute import KNNImputer
nan = np.nan
X = [[1, 2, nan], [3, 4, 3], [nan, 6, 5], [8, 8, 7]]
imputer = KNNImputer(n_neighbors=2)
imputed_X = imputer.fit_transform(X)

Beibehalten der Anzahl der Merkmale konstant

Standardmäßig fallen bei scikit - learn - Imputern Spalten mit ausschließlich fehlenden Werten weg. In einigen Fällen ist es jedoch erforderlich, die leeren Merkmale beizubehalten, um die Form der Daten beizubehalten. Dies können wir erreichen, indem wir den Parameter keep_empty_features auf True setzen.

imputer = SimpleImputer(keep_empty_features=True)
X = np.array([[np.nan, 1], [np.nan, 2], [np.nan, 3]])
imputed_X = imputer.fit_transform(X)

Markieren von imputierten Werten mit MissingIndicator

Der Transformator MissingIndicator ist nützlich, um das Vorhandensein fehlender Werte in einem Datensatz anzuzeigen. Es kann in Verbindung mit der Imputation verwendet werden, um Informationen darüber zu bewahren, welche Werte imputiert wurden. Dieser Transformator gibt eine binäre Matrix zurück, die das Vorhandensein fehlender Werte im Datensatz angibt.

from sklearn.impute import MissingIndicator
X = np.array([[-1, -1, 1, 3], [4, -1, 0, -1], [8, -1, 1, 0]])
indicator = MissingIndicator()
mask_missing_values_only = indicator.fit_transform(X)

Zusammenfassung

In diesem Tutorial haben wir verschiedene Strategien zur Imputation fehlender Werte mit scikit - learn gelernt. Wir haben die einvariate Merkmalsimputation mit SimpleImputer, die mehrdimensionale Merkmalsimputation mit IterativeImputer, die Imputation mit den nächsten Nachbarn mit KNNImputer, das Beibehalten der Anzahl der Merkmale konstant und das Markieren von imputierten Werten mit MissingIndicator untersucht. Diese Techniken können wertvolle Werkzeuge sein, um fehlende Daten zu behandeln und sicherzustellen, dass maschinelle Lernalgorithmen auf unvollständige Datensätze angewandt werden können.