Ich habe im Dezember 2018 angefangen, Programmieren (Python) zu studieren und in den letzten Monaten angefangen, an Kaggle zu arbeiten.
Unter ihnen gab es viele Dinge, die ich mich fragte: "Wie mache ich das?", Und ich fuhr fort, während ich verschiedene Dinge untersuchte, also werde ich mich dieses Mal auf diese "Vorverarbeitung" konzentrieren und sie zusammenfassen. Überlegen.
Es ist eine bekannte Titanic in Kaggle. https://www.kaggle.com/c/titanic
import matplotlib
import matplotlib.pyplot as plt
matplotlib.style.use('ggplot')
import seaborn as sns
import numpy as np
import pandas as pd
Ich werde die Daten lesen.
df_train = pd.read_csv(r"C:///train.csv")
df_test = pd.read_csv(r"C:///test.csv")
df_train.shape
df_test.shape
Jetzt können Sie sehen, dass die Trainingsdaten (891, 12) und die Testdaten (418, 11) sind.
Lassen Sie uns die ersten 5 Zeilen löschen, um zu sehen, welche Art von Daten darin enthalten sind.
df_train.head()
df_test.head()
Es scheint, dass die Daten so aussehen.
Wie Sie an df_test.head () sehen können, zeigt die Spalte die Spalte, in der die Zielvariable "Survived" aus der Spalte der Trainingsdaten verschwunden ist.
Kombinieren wir die Trainingsdaten und Testdateninformationen zu einer.
df_train.info()
print("-"*48)
df_test.info()
Sie können die Anzahl der Daten und den Datentyp in jeder Spalte grob überprüfen.
df_train.describe()
Numerische Dateninformationen werden angezeigt.
df_train.describe(include=['O'])
Die kategorialen Variablen Name, Geschlecht, Ticket, Kabine und Eingeschifft werden für jede Nummer / jeden eindeutigen Wert, jede Kategorie mit der höchsten Häufigkeit und die Anzahl der Vorkommen angezeigt.
Das ist mir wichtig, da es in den frühen Tagen so sehr gestolpert ist.
Am Ende werden wir getrennt für Trainingsdaten und Testdaten lernen, aber es ist kompliziert, eine Vorverarbeitung durchzuführen, wie z. B. die Verarbeitung fehlender Werte und die Verarbeitung kategorialer Variablen für jede Trainingsdaten und Testdaten. Fassen Sie sie also zuerst zusammen und dann Ich werde es wieder von trennen.
#Erstellen Sie eine neue Spalte mit dem Namen TrainFlag und setzen Sie sie für Trainingsdaten auf True und für Testdaten auf False.
df_train["TrainFlag"] = True
df_test["TrainFlag"] = False
#Kombinieren Sie Trainings- und Testdaten
df_all = df_train.append(df_test)
#PassengerId wird wahrscheinlich nicht für Feature-Mengen verwendet, daher möchte ich es löschen.
#Da dies jedoch bei der späteren Übermittlung von Testdaten erforderlich ist, werden diese nicht vollständig gelöscht.
#Als Index behalten
df_all.index = df_all["PassengerId"]
df_all.drop("PassengerId", axis = 1, inplace = True)
Wenn Sie sich df_all ansehen, sieht es so aus. Der Index lautet PassengerId, und ganz rechts befindet sich die gerade hinzugefügte TrainFlag-Spalte. Richtig sind die Trainingsdaten und Falsch (hier nicht gezeigt) sind die Testdaten.
Dadurch werden sie in absteigender Reihenfolge sortiert.
df_all.isnull().sum().sort_values(ascending=False)
Es wäre schön, wenn die Anzahl der Variablen ungefähr zu dieser Zeit wäre, aber wenn die Anzahl der Variablen zunimmt, ist es sehr schwierig zu sehen, ob die numerischen Werte der fehlenden Werte aller erklärenden Variablen angegeben sind.
Lassen Sie uns daher die Variablen mit "fehlenden Werten" eingrenzen und in absteigender Reihenfolge sortieren.
df_all.isnull().sum()[df_train.isnull().sum()>0].sort_values(ascending = False)
Dann wurden nur die Variablen mit fehlenden Werten in absteigender Reihenfolge sortiert!
◆Cabin Bei df_all.shape beträgt die Anzahl der Daten 1.309, wenn die Trainingsdaten und Testdaten kombiniert werden. Von diesen fehlen 1.014 Kabinen, daher werde ich dieses Mal jede Spalte vom Analyseziel ausschließen, damit ich hier keine Verarbeitung fehlender Werte durchführe.
◆Age Das Alter hat auch einige fehlende Werte, aber es gibt nicht so viele, und obwohl ich diesmal nicht darauf eingehen werde, scheint das Alter das Modell zu beeinflussen, so dass wir fehlende Werte verarbeiten werden.
Es gibt verschiedene Möglichkeiten, dies zu tun, aber dieses Mal werde ich es mit orthodoxen Durchschnittswerten füllen.
df_all["Age"] = df_all["Age"].fillna(df_all["Age"].mean())
◆Embarked Wenn Sie df_all.describe (include = ['O']) ausführen, können Sie sehen, dass Embarked nur 3 eindeutige Werte hat und die meisten von ihnen "S" sind. Diesmal füllen wir die fehlenden Werte mit S aus.
df_all["Embarked"] = df_all["Embarked"].fillna("S")
df_all.isnull().sum()[df_train.isnull().sum()>0].sort_values(ascending = False)
Dann können Sie sehen, dass nur Cabin einen fehlenden Wert hat, sodass die Verarbeitung des fehlenden Werts jetzt abgeschlossen ist.
Ich werde diesmal auf eine detaillierte Prüfung verzichten, aber aufgrund der Datenanalyse wird davon ausgegangen, dass Kabine, Name, Passagier-ID, Ticket für diesen Modellbau nicht erforderlich sind.
Löschen wir diese Spalten.
df_all = df_train.drop(["Cabin", 'Name','PassengerId','Ticket'], axis = 1)
df_all = pd.get_dummies(df_all, drop_first=True)
Wenn Sie mit df_all.head () prüfen, können Sie sehen, dass die kategoriale Variable wie folgt verarbeitet werden kann.
Damit ist die wahnsinnig orthodoxe Vorverarbeitung abgeschlossen, und danach werden wir mit dem vollständigen Modellbau fortfahren.
Es ist ein sehr rudimentärer Inhalt für Fortgeschrittene und höher, aber zuerst war es sehr schwierig, diese zu untersuchen, und jedes Mal wurde ich gestresst.
Wir hoffen, dass es solchen Menschen hilft, ihr Verständnis zu vertiefen.
Recommended Posts