[PYTHON] Beachten Sie, dass ich süchtig nach der fehlenden Wertinterpolation von sklearn war (Imputer)

Einführung

Ich bin süchtig nach dem Versuch, fehlende Werte in einem DataFrame zu vervollständigen, der eine Zeichenfolge von Zeichenfolgendaten enthält. Notieren Sie sich dies.

Was ist fehlende Wertvervollständigung?

Ergänzung nicht vorhandener Daten durch Verwendung von Umgebungsdaten.

Beispiel für einen fehlenden Wert

Angenommen, Sie haben die folgenden Daten. Die fünfte Zeile der Spalte Geschlecht ist unbekannt. Es gibt verschiedene Methoden der Komplementation, wie die Verwendung des Durchschnittswerts und des Medianwerts, aber dieses Mal möchte ich einfach mit dem Mann ergänzen, der das Geschlecht der Mehrheit darstellt. sample.png

Was ich getan habe

Um Daten in den Lernenden einzugeben, müssen die Zeichenkettendaten in numerische Daten umgewandelt werden. Nachdem ich männlich in 0 und weiblich in 1 konvertiert hatte, schrieb ich den Code, um den fehlenden Wert zu vervollständigen. Das heißt, ersetzen Sie unbekannt durch 0 (männlich).

import pandas as pd
from sklearn.preprocessing import Imputer 

df_sample = pd.read_csv('sample.csv')
gender_map = {'male':0, 'female':1}
df_sample['gender'] = df_sample['gender'].map(gender_map) #Ersetzen Sie das Männchen durch 0 und das Weibchen durch 1
imr = Imputer(missing_values='unknown', strategy='most_frequent', axis=0)#Ergänzende Objekterstellung
imputed_data = imr.fit_transform(df_sample) #Abschluss anwenden

Geben Sie fehlende Werte in den Methoden "Fehlende Werte" und "Abschluss" (Mittelwert für Durchschnitt, Median für Median) für die Strategie an.

Hier ist der folgende Fehler aufgetreten.

TypeError: ufunc 'isnan' not supported for the input types, and the inputs could not be safely coerced to any supported types according to the casting rule ''safe''

Nach dem Ersetzen der Zeichenfolge durch einen numerischen Wert sah der DataFrame wie folgt aus. sample2.png

Dies lag daran, dass jede Spalte im DataFrame ein Serienobjekt war und alle Werte vom gleichen Typ waren. Mit anderen Worten, die unbekannte Zeichenfolge und der numerische Wert 0,1 können nicht nebeneinander existieren.

Lösung

Ich habe den "unbekannten" Teil des Codes in "NaN" geändert und es hat funktioniert.

import pandas as pd
from sklearn.preprocessing import Imputer 

df_sample = pd.read_csv('sample.csv')
gender_map = {'male':0, 'female':1}
df_sample['gender'] = df_sample['gender'].map(gender_map) #Ersetzen Sie das Männchen durch 0 und das Weibchen durch 1
imr = Imputer(missing_values='NaN', strategy='most_frequent', axis=0)#Ergänzende Objekterstellung
imputed_data = imr.fit_transform(df_sample) #Abschluss anwenden

Verweise

Python Machine Learning Programmiertheorie und Implementierung durch Expert Data Scientist (Impress)

Recommended Posts

Beachten Sie, dass ich süchtig nach der fehlenden Wertinterpolation von sklearn war (Imputer)
Eine Geschichte, von der ich bei np.where süchtig war
Ich war süchtig nach Multiprocessing + Psycopg2
Eine Geschichte, die ich süchtig danach war, Lambda von AWS Lambda anzurufen.
Ein Hinweis, von dem ich süchtig war, als ich unter Linux einen Piepton machte
Ein Hinweis, dem ich beim Erstellen einer Tabelle mit SQL Alchemy verfallen war
Ich war süchtig danach, mysqlclient zu installieren
Beachten Sie, dass ich süchtig danach war, mit Pythons mysql.connector über eine Webanwendung auf die Datenbank zuzugreifen
Ich war auf dotCloud süchtig nach Flask
Was ich süchtig nach Python Autorun war
Ich war süchtig danach, Cython mit PyCharm auszuprobieren, also machen Sie sich eine Notiz
Ein Hinweis, dem ich beim Ausführen von Python mit Visual Studio Code verfallen war
Eine Geschichte, der ich nach der SFTP-Kommunikation mit Python verfallen war
Beachten Sie, dass ich süchtig danach war, TensowFlow einzurichten
Ich war süchtig danach, 2020 mit Selen (+ Python) zu kratzen
Ich war süchtig danach, logging.getLogger mit Flask 1.1.x zu versuchen
Wovon ich süchtig war, als ich Python Tornado benutzte
Memo (März 2020), dem ich bei der Installation von Arch Linux auf dem MacBook Air 11'Early 2015 verfallen war
[IOS] GIF-Animation mit Pythonista3. Ich war süchtig danach.
Wovon ich süchtig war, als der Processing-Benutzer zu Python wechselte
[Fix] Ich war süchtig nach dem alphanumerischen Urteil über Python-Strings
Eine Geschichte über das Schreiben von AWS Lambda und ein wenig Abhängigkeit von den Standardwerten von Python-Argumenten
Die Platte, von der ich süchtig war, als ich MeCab in Heroku einsetzte
Wovon ich süchtig war, als ich ALE in Vim für Python einführte
Was ich mit json.dumps in Pythons base64-Codierung süchtig gemacht habe
Ich war süchtig nach falschen Klassenvariablen und Instanzvariablen in Python
[Fabric] Ich war süchtig danach, Boolesche Werte als Argument zu verwenden. Notieren Sie sich also die Gegenmaßnahmen.
Zwei Dinge, die ich süchtig danach war, Django + Apache + Nginx unter Windows zu erstellen
Ich war süchtig danach, Tensorflow auf einer GPU mit dem NVIDIA-Treiber 440 + CUDA 10.2 auszuführen
Eine Geschichte, die mich süchtig nach dem Versuch machte, LightFM unter Amazon Linux zu installieren
Ich war süchtig danach, eine Python-Venv-Umgebung mit VS Code zu erstellen
Eine Geschichte, die ich süchtig danach war, eine Video-URL mit Tweepy zu bekommen
Verwenden Sie Python aus Java mit Jython. Ich war auch süchtig danach.
Ich war süchtig danach, Markdown nicht für die lange Beschreibung von Pypi verwenden zu können
Der Dateiname war in Python schlecht und ich war süchtig nach Import
Ich dachte, es sei dasselbe wie Python, und ich war süchtig nach dem Problem, dass der Ruby-Interpreter nicht gestartet wurde.