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.