[PYTHON] Ich habe versucht, Überlebende der Titanic mit Kaggle vorherzusagen und einzureichen

Der Ausführungscode, der Inhalt und die Erklärung werden unter der folgenden URL beschrieben.

Jupiter-Notizbuch https://github.com/spica831/kaggle_titanic/blob/master/titanic.ipynb

Hintergrund

Ich nahm an einem Hackathon teil, um den Preis eines Hauses in Kaggle zu schätzen Ich konnte es nicht rechtzeitig lösen, da ich nicht wusste, wie man Python benutzt und wie man es analysiert. Aus Rache haben wir daher das Überleben der Titanic vorhergesagt. https://www.kaggle.com/c/titanic

Prognostizieren Sie die Verkaufspreise für Eigenheime mit Kaggle

House Prices: Advanced Regression Techniques https://www.kaggle.com/c/house-prices-advanced-regression-techniques

Aus der Schlussfolgerung ergab sich eine korrekte Antwortrate für die Vorhersage der Titanic von 0,7512.

Methode

#Importieren Sie die erforderlichen Pakete
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
%matplotlib inline
#Wert lesen
df = pd.read_csv("./input/train.csv")
df

Zeigen Sie den Wert an. スクリーンショット 2017-04-19 22.53.49.png

Vorverarbeitung

Ersetzen von Zeichenketten

Anscheinend werden Zeichenketten für Namen und Geschlechter verwendet. Ist es Geschlecht (Geschlecht) oder Boarding-Rang, da es nicht für die Analyse verwendet werden kann? Da es nur wenige Zeichenmuster wie (eingeschifft) gibt, werden sie durch numerische Werte wie 0, 1 bzw. 2 ersetzt.

Außerdem hat Alter (Alter) einen fehlenden Wert (NaN), sodass alle durch 0 ersetzt wurden.

df.Embarked = df.Embarked.replace(['C', 'S', 'Q'], [0, 1, 2])
#df.Cabin = df.Cabin.replace('NaN', 0)
df.Sex = df.Sex.replace(['male', 'female'], [0, 1])
df.Age = df.Age.replace('NaN', 0)

Spalte löschen

Schwer zu handhabende Elemente wie Name und Ticketkabine wurden für jede Spalte gelöscht. (schmerzlich)

df.drop(['PassengerId', 'Name', 'Ticket', 'Cabin'], axis=1, inplace=True)

Ergebnis der Vorverarbeitung

Alle könnten durch numerische Werte ersetzt werden.

df

スクリーンショット 2017-04-19 22.54.08.png



Analyse

Korrelationskoeffizient

Berechnen Sie zuerst den Korrelationskoeffizienten

Informationen zum Korrelationskoeffizienten finden Sie im folgenden Wiki https://ja.wikipedia.org/wiki/%E7%9B%B8%E9%96%A2%E4%BF%82%E6%95%B0 image

Korrelationskoeffizientenwert

#Berechnen Sie den Korrelationskoeffizienten
corrmat = df.corr()
corrmat

スクリーンショット 2017-04-19 22.54.18.png

Wärmekarte des Korrelationskoeffizienten

f, ax = plt.subplots(figsize=(12,9))
sns.heatmap(corrmat, vmax=.8, square=True)

8nqTunXxjzAAAAABJRU5ErkJggg==.png

Es wurde festgestellt, dass eine Korrelation bestand.

Lernen

Vorbereitung vor dem Lernen

Teilen Sie die Antwort (train_labels hier Survived) und den Parameter (train_features here außer Survived`)

train_labels = df['Survived'].values
train_features = df
train_features.drop('Survived', axis=1, inplace=True)
train_features = train_features.values.astype(np.int64)

Lernen Sie mit Support Vector Machine

Schließlich haben wir eine Zwei-Klassen-Klassifizierungslernmaschine unter Verwendung der linearen SVM in scicit-learn erstellt. (Ich habe keine detaillierten Parameter festgelegt, hätte aber die L1- und L2-Regularisierung durchführen sollen.)

from sklearn import svm
#Standard = svm.LinearSVC(C=1.0, intercept_scaling=1, multi_class=False , loss="l1", penalty="l2", dual=True)
svm = svm.LinearSVC()
svm.fit(train_features, train_labels)

Prüfung

Lesen Sie den diesmal berechneten Testwert

df_test = pd.read_csv("./input/test.csv")

Vorbereitungen

#Löschen Sie nicht benötigte Spalten
df_test.drop(['PassengerId', 'Name', 'Ticket', 'Cabin'], axis=1, inplace=True)

#Numerische Ersetzung der Zeichenkette
df_test.Embarked = df_test.Embarked.replace(['C', 'S', 'Q'], [0, 1, 2])
df_test.Sex = df_test.Sex.replace(['male', 'female'], [0, 1])
df_test.Age = df_test.Age.replace('NaN', 0)

#In Array-Wert konvertieren
test_features = df_test.values.astype(np.int64)

Mit SVM klassifizieren.

y_test_pred = svm.predict(test_features)

Schließlich

In ein Formular konvertieren, das an Kaggle gesendet werden kann

#Laden Sie die Testwerte neu und fügen Sie nach SVM kategorisierte Spalten hinzu
df_out = pd.read_csv("./input/test.csv")
df_out["Survived"] = y_test_pred

#Ausgabe in das Ausgabeverzeichnis
df_out[["PassengerId","Survived"]].to_csv("./output/submission.csv",index=False)

Ergebnis

Wie eingangs erwähnt, betrug die korrekte Antwortrate der Vorhersage der Titanic 0,7512. Ich war jedoch zufrieden, weil ich mich in wenigen Stunden bilden und einreichen konnte.

Dinge zu verbessern

Es gab viele Punkte, die während der Erstellung verbessert werden mussten.

Vorverarbeitung

  1. Das Alter sollte in zwei Teile geteilt werden, mit Ausnahme von NaN und einem bestimmten NaN-Wert.
  2. Wenn Sie sich das Histogramm ansehen und die Gaußsche Verteilung links ist, sollte es logarithmisch sein, sich der Gaußschen Verteilung zu nähern. (Dr. Andrew sagte das auch in Coursera.)
  3. Es wurde keine Wertaufhellung durchgeführt.
  4. Ich hätte mein Bestes tun sollen, um die Werte einer großen Anzahl verworfener Zeichenfolgen in numerische Werte umzuwandeln. Insbesondere wollte ich Cabin und Ticket nicht wegwerfen.

Analyse

  1. Ich habe nur den Korrelationskoeffizienten betrachtet.

Sorter

  1. Der Wert wurde nicht reguliert
  2. Nichtlineare SVMs oder andere Klassifikatoren wurden nicht berücksichtigt.

Zusammenfassung

Ich konnte in kurzer Zeit Output produzieren und habe mein Ziel erreicht. Ich erkannte jedoch zutiefst, dass ich nicht die Zeit und Erfahrung hatte, die optimale Berechnungsmethode zu finden, indem ich das, was ich bisher gelernt hatte, in kurzer Zeit verwendete.

Recommended Posts

Ich habe versucht, Überlebende der Titanic mit Kaggle vorherzusagen und einzureichen
Ich habe versucht, das Überleben der Titanic mit PyCaret vorherzusagen
Ich habe versucht, mit Kaggles Titanic (kaggle②) zu lernen.
Ich habe versucht, nächstes Jahr mit AI vorherzusagen
Ich habe versucht, mit VOICEROID2 2 automatisch zu lesen und zu speichern
Ich habe versucht, DCGAN mit PyTorch zu implementieren und zu lernen
Ich habe versucht, mit VOICEROID2 automatisch zu lesen und zu speichern
Ich habe versucht, Grad-CAM mit Keras und Tensorflow zu implementieren
Vorhersage der Titanic von Kaggle mit Keras (kaggle ⑦)
Ich habe versucht, den Immobilienpreis in Boston mit PyCaret vorherzusagen
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Ich habe versucht, die Lesezeichen zu visualisieren, die mit Doc2Vec und PCA nach Slack fliegen
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, Bulls and Cows mit einem Shell-Programm zu erstellen
Ich habe versucht, Gesichtsmarkierungen mit Python und Dlib leicht zu erkennen
Ich habe versucht, Autoencoder mit TensorFlow zu implementieren
Ich habe versucht, AutoEncoder mit TensorFlow zu visualisieren
Ich habe versucht, mit Hy anzufangen
Ich habe versucht, Faktoren mit Titanic-Daten zu analysieren!
Ich habe versucht, CVAE mit PyTorch zu implementieren
Ich habe versucht, TSP mit QAOA zu lösen
Ich versuchte, Trauer und Freude über das Problem der stabilen Ehe auszudrücken.
Ich habe versucht, datetime <-> string mit tzinfo mit strftime () und strptime () zu konvertieren.
Ich habe versucht, den Winkel von Sin und Cos mit Chainer zu lernen
Ich habe versucht, das Verhalten des neuen Koronavirus mit dem SEIR-Modell vorherzusagen.
Ich habe versucht, die Netzwerkbandbreite und -verzögerung mit dem Befehl tc zu steuern
Ich habe versucht, das Lesen von Dataset mit PyTorch zu implementieren
Ich habe versucht, lightGBM, xg Boost mit Boruta zu verwenden
Ich habe versucht, mit TF Learn die logische Operation zu lernen
Ich habe versucht, GAN (mnist) mit Keras zu bewegen
Ich habe DCGAN implementiert und versucht, Äpfel zu generieren
Ich habe versucht, die Daten mit Zwietracht zu speichern
Ich habe versucht, mit OpenCV Bewegungen schnell zu erkennen
Ich habe versucht, Keras in TFv1.1 zu integrieren
Ich habe versucht, mit PartiQL und MongoDB verbunden zu spielen
Ich habe versucht, die Hauptkomponenten mit Titanic-Daten zu analysieren!
Ich habe Jacobian und teilweise Differenzierung mit Python versucht
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Ich habe Funktionssynthese und Curry mit Python versucht
Ich habe versucht, LLVM IR mit Python auszugeben
Ich habe versucht, ein Objekt mit M2Det zu erkennen!
Ich habe versucht, die Herstellung von Sushi mit Python zu automatisieren
Ich habe versucht, Linux mit Discord Bot zu betreiben
Ich habe versucht, DP mit Fibonacci-Sequenz zu studieren
Ich habe versucht, Jupyter mit allen Amazon-Lichtern zu starten
Ich habe versucht, Tundele mit Naive Bays zu beurteilen
[Einführung in PID] Ich habe versucht, ♬ zu steuern und zu spielen
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Ich habe versucht, die Pferde vorherzusagen, die mit LightGBM unter den Top 3 sein werden
[Einführung in AWS] Ich habe versucht, eine Konversations-App zu portieren und mit text2speech @ AWS playing zu spielen
Ich habe versucht, eine einfache Bilderkennungs-API mit Fast API und Tensorflow zu erstellen
Ich habe versucht zu debuggen.
Einführung in die KI-Erstellung mit Python! Teil 3 Ich habe versucht, Bilder mit einem Convolutional Neural Network (CNN) zu klassifizieren und vorherzusagen.
Ich habe versucht, die Sündenfunktion mit Chainer zu trainieren