So gehen Sie mit fehlenden Daten mit dem Imputermodul von Scikit-learn umSo gehen Sie mit fehlenden Daten mit dem Imputermodul von Scikit-learn um
Bild vom Herausgeber | Midjourney & Canva

Lernen wir, wie man den Imputer von Scikit-learn zum Verarbeiten fehlender Daten verwendet.

Vorbereitung

Stellen Sie sicher, dass Numpy, Pandas und Scikit-Study in Ihrer Umgebung installiert sind. Wenn nicht, können Sie sie über Pip mit dem folgenden Code installieren:

pip set up numpy pandas scikit-learn

Anschließend können wir die Pakete in Ihre Umgebung importieren:

import numpy as np
import pandas as pd
import sklearn
from sklearn.experimental import enable_iterative_imputer

Fehlende Daten mit Imputer verarbeiten

Ein scikit-Study-Imputer ist eine Klasse, die zum Ersetzen fehlender Daten durch bestimmte Werte verwendet wird. Er kann Ihren Datenvorverarbeitungsprozess optimieren. Wir werden verschiedene Strategien zum Umgang mit den fehlenden Daten untersuchen.

Lassen Sie uns ein Datenbeispiel für unser Beispiel erstellen:

sample_data = {'First': (1, 2, 3, 4, 5, 6, 7, np.nan,9), 'Second': (np.nan, 2, 3, 4, 5, 6, np.nan, 8,9)}
df = pd.DataFrame(sample_data)
print(df)
    First  Second
0    1.0     NaN
1    2.0     2.0
2    3.0     3.0
3    4.0     4.0
4    5.0     5.0
5    6.0     6.0
6    7.0     NaN
7    NaN     8.0
8    9.0     9.0

Sie können die fehlenden Werte der Spalten mit dem Scikit-Study Easy Imputer unter Verwendung des Mittelwerts der jeweiligen Spalte füllen.

    First  Second
0   1.00    5.29
1   2.00    2.00
2   3.00    3.00
3   4.00    4.00
4   5.00    5.00
5   6.00    6.00
6   7.00    5.29
7   4.62    8.00
8   9.00    9.00

Zur Beachtung: Wir runden das Ergebnis auf 2 Dezimalstellen.

Es ist auch möglich, die fehlenden Daten mit Median mithilfe von Easy Imputer zu imputieren.

imputer = sklearn.SimpleImputer(technique='median')
df_imputed = spherical(pd.DataFrame(imputer.fit_transform(df), columns=df.columns),2)

print(df_imputed)
   First  Second
0    1.0     5.0
1    2.0     2.0
2    3.0     3.0
3    4.0     4.0
4    5.0     5.0
5    6.0     6.0
6    7.0     5.0
7    4.5     8.0
8    9.0     9.0

Der Mittelwert- und Median-Imputationsansatz ist einfach, kann jedoch die Datenverteilung verzerren und zu einer Verzerrung einer Datenbeziehung führen.

Es besteht auch die Möglichkeit, einen Okay-NN-Imputer zu verwenden, um die fehlenden Daten mit dem Nearest-Neighbor-Ansatz zu ergänzen.

knn_imputer = sklearn.KNNImputer(n_neighbors=2)
knn_imputed_data = knn_imputer.fit_transform(df)
knn_imputed_df = pd.DataFrame(knn_imputed_data, columns=df.columns)

print(knn_imputed_df)
    First  Second
0    1.0     2.5
1    2.0     2.0
2    3.0     3.0
3    4.0     4.0
4    5.0     5.0
5    6.0     6.0
6    7.0     5.5
7    7.5     8.0
8    9.0     9.0

Der KNN-Imputer würde den Mittelwert oder Median der Werte des Nachbarn aus dem ok nächste Nachbarn.

Schließlich gibt es noch die Methode der iterativen Impute, die auf der Modellierung jedes Options mit fehlenden Werten als Funktion anderer Options basiert. Wie in diesem Artikel erwähnt, handelt es sich dabei um eine experimentelle Funktion, die wir additionally zunächst aktivieren müssen.

iterative_imputer = IterativeImputer(max_iter=10, random_state=0)
iterative_imputed_data = iterative_imputer.fit_transform(df)
iterative_imputed_df = spherical(pd.DataFrame(iterative_imputed_data, columns=df.columns),2)

print(iterative_imputed_df)
    First  Second
0    1.0     1.0
1    2.0     2.0
2    3.0     3.0
3    4.0     4.0
4    5.0     5.0
5    6.0     6.0
6    7.0     7.0
7    8.0     8.0
8    9.0     9.0

Wenn Sie den Imputer richtig verwenden können, kann dies zur Verbesserung Ihres Information-Science-Projekts beitragen.

Weitere Ressourcen

Cornellius Yudha Wijaya ist Information Science Assistant Supervisor und Datenautor. Während seiner Vollzeitbeschäftigung bei Allianz Indonesien teilt er gerne Python- und Datentipps über soziale Medien und in den Medien. Cornellius schreibt über eine Vielzahl von KI- und maschinellen Lernthemen.

Von admin

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert