[PYTHON] Kaguru zum ersten Mal

Dieser Artikel ist der 17. Tag von Akatsuki Adventskalender 2016.

Freut mich, dich kennenzulernen. Mein Name ist @chosty und ich bin Serveringenieur bei Akatsuki Co., Ltd. Kürzlich habe ich gesagt, dass "Arbeit schlecht für meine Gesundheit ist" bei der Arbeit.

Persönlich interessiere ich mich für maschinelles Lernen und Datenanalyse und arbeite von Zeit zu Zeit daran. Bis jetzt habe ich diesen Bereich mit R gemacht, aber es gab einen Ort, an dem ich Python berühren wollte, also werde ich einen Artikel schreiben, der besagt, dass ich ein kurzes Tutorial mit Kaggle ausprobiert habe.

Was ist Kaggle?

Dies ist eine Website für Datenanalyse-Wettbewerbe. Die offizielle Website ist hier. Datensätze und Themen (Zwecke) werden von Unternehmen und Forschern präsentiert und konkurrieren um Punktzahlen. Es scheint, dass Sie, wenn Sie eine gute Punktzahl geben, einen Preis erhalten und über die Rekrutierung sprechen. Das ist eine gute Geschichte. Im vergangenen Jahr sprach Recruit über den ersten Wettbewerb eines japanischen Unternehmens. Es scheint, dass zu diesem Zeitpunkt etwa 340.000 Datenanalysten bei Kaggle registriert waren.

Es ist ein solcher Service, aber zusätzlich zu den von Unternehmen und Forschern angebotenen Wettbewerben gibt es auch Lernwettbewerbe von Kaggle. Dieses Mal werde ich einen von ihnen ausprobieren und das Problem der Überlebensvorhersage der Titanic angehen. https://www.kaggle.com/c/titanic

Aufgabe

Das Titanic Survivor Prediction Problem sagt das Leben oder den Tod einer Person an Bord der Titanic anhand vorgegebener Daten voraus, und das war's. Laden Sie train.csv und test.csv von der oben genannten Website herunter und sehen Sie, welche Funktionen angeboten werden.

Funktionswert Bedeutung
PassengerID Nur ein Ausweis von Kaggle
Survived Hast du überlebt?(0 = NO, 1 = Yes)
Pclass Raumklasse
Name Name
Sex Sex
Age Alter
SibSp Anzahl der Brüder und Ehepartner, die zusammen reiten
Parch Anzahl der Eltern und Kinder, die zusammen fahren
Ticket Ticketnummer
Fare Passagiertarif
Cabin Kabine
Embarked Einstiegsort

Aus den obigen Merkmalsgrößen scheint es ein Fluss zu sein, nach einem zu suchen, der für die Vorhersage effektiv zu sein scheint, und daraus ein Vorhersagemodell zu erstellen. Wenn Sie ein Modell erstellen, ist es gut, eine Hypothese zu erstellen und zu untersuchen. Zum Beispiel kann es gut sein zu glauben, dass Menschen, die sich in erstklassigen Zimmern befanden, eine hohe Überlebensrate haben oder dass viele Familien zusammen fahren und dass Männer eine niedrige Überlebensrate haben. Darüber hinaus halte ich es diesmal für sinnvoller, die nicht funktionierenden Funktionen zu entfernen und etwas hinzuzufügen, das anscheinend von Ihnen selbst funktioniert. Diesmal geht es jedoch darum, es schnell zu machen, also werde ich es seitwärts legen. "Survived" ist übrigens natürlich nur in "train.csv" verfügbar.

Schauen Sie sich die Daten an und probieren Sie es vorerst aus

Von hier aus nehmen wir die Daten mit Python auf und sehen, welche Werte gespeichert sind.

##Vorbereitung
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
%matplotlib inline

train = pd.read_csv("train.csv")
train.head() #Geben Sie die ersten 5 Datenzeilen aus
train.info() #Datentypbestätigung
train.isnull().sum() #Bestätigung fehlender Werte
train.describe() #Zusammenfassung

Ein solches Ergebnis wird zurückgegeben.

head.png info.png is_null.png describe.png

jupyter bequem, das beste.

Da die Bedeutung von Survived 0,38 ist, ist ersichtlich, dass etwa 60% der Menschen gestorben sind. Auch wenn vorerst nicht jeder hilft, wird die Genauigkeit so bleiben, wie sie ist.

Ich möchte die fehlenden altersbedingten Werte ausgleichen. Es gibt verschiedene ergänzende Methoden, und es wäre besser, aus der Ähnlichkeit mit anderen Datensätzen zu entscheiden oder aus anderen Merkmalsgrößen zu schätzen, diese jedoch vorerst durch den Medianwert zu ersetzen. Ich dachte darüber nach, das Geschlecht und den Einstiegsort in einen Dummy zu ändern und die Kabine fallen zu lassen, weil zu viele Werte fehlen, also werde ich es tun. Ich würde gerne mit dem Namen umgehen, aber es ist problematisch, also werde ich ihn vorerst fallen lassen. Tickets sind auch ein Hindernis, also lassen Sie sie fallen. Löschen Sie den Datensatz mit dem fehlenden Wert am Ende. Wenn die Genauigkeit schlecht ist, ist es gut, nützliche Funktionen aus den hier abgelegten Informationen zu erstellen.

##Datenformung
train.Age = train.Age.fillna(train.Age.mean())
train = train.replace("male",0).replace("female",1).replace("C",0).replace("Q",1).replace("S",2)
train = train.drop(["Name", "Ticket", "Cabin", "PassengerID"], axis=1)
train = train.dropna()
train_data = train.values

Betrachtet man den Korrelationskoeffizienten in diesem Zustand, so ist er wie folgt.

corr.png

Das Geschlecht hat die höchste Korrelation mit Survived, gefolgt von der Verpflegung, der Anzahl der Eltern und Kinder und der Klasse der Gästezimmer. Ist der Boarding-Tarif positiv korreliert, aber die Gästezimmerklasse negativ korreliert? (Raumklassen sind 1 = 1., 2 = 2., 3 = 3 ..) Ich dachte, dass die Anzahl der Features zu gering war, aber es gab einige Features, die korreliert waren. Deshalb werde ich ein Modell mit den formatierten Daten erstellen, wie sie sind.

Dieses Mal werde ich ein Modell mit Random Forest erstellen und das Leben und den Tod der Person in den Testdaten vorhersagen. Ich denke, es ist einfach, Random Forest zu verstehen, wenn man sich Mr. Hamadas Materialien ansieht. http://www.slideshare.net/hamadakoichi/randomforest-web Es ist gut, die ursprüngliche Arbeit zu treffen, aber es gibt ziemlich viel und ich möchte es implementieren! Ich möchte mehr wissen! Wenn Sie keine Person sind, müssen Sie es nicht lesen. Wie auch immer, wenn Sie verärgert sind, sollten Sie viele Entscheidungsbäume treffen und eine Mehrheitsentscheidung treffen, oder so ähnlich.

##Modellbau
from sklearn.ensemble import RandomForestClassifier 
forest = RandomForestClassifier(n_estimators = 100)
forest = forest.fit(train_data[0::,1::],train_data[0::,0])

##Prognose
test = pd.read_csv("test.csv")
ids = test["PassengerId"].values
test.Age = test.Age.fillna(test.Age.mean())
test.Fare = test.Fare.fillna(test.Fare.mean())
test = test.replace("male",0).replace("female",1).replace("C",0).replace("Q",1).replace("S",2)
test = test.drop(["Name", "Ticket", "Cabin", "PassengerId"], axis=1)
test_data = test.values
output = forest.predict(test_data)

##Export
import csv
output_file = open("output.csv", "w")
file = csv.writer(output_file)
file.writerow(["PassengerId","Survived"])
file.writerows(zip(ids, output.astype(np.int64)))
output_file.close()

Wenn Sie die exportierte CSV an kaggle senden, wird die Punktzahl ausgegeben. So was.

result.png

Dies war ungefähr 75% genau. Es ist genauer als die Vorhersage, dass jeder gestorben ist, aber es ist nicht so hoch und es scheint vernünftig zu sein, selbst wenn Sie es richtig machen. Sie können sehen, dass ich auf die Leiter schaue, aber ich schätze alle Top 14 Leute. Wie kann ich das machen ...

Eindrücke und Zukunft

Es ist ziemlich einfach einzureichen, und natürlich können Sie Ihre eigene Punktzahl sehen, und es ist schön, sie mit den Punktzahlen anderer Leute vergleichen zu können. Es gibt unzählige Beiträge in den Foren. Schauen Sie sich also meine Vorhersagemethode an! !! !! Es macht Spaß und ist lehrreich zu sehen. Dieses Mal war es mein Ziel, schnell ein Modell zu erstellen, es vorherzusagen und einzureichen, aber ich wünschte, ich hätte etwas mehr Zeit gebraucht. Vielleicht sollten Sie für jede Funktion etwas planen oder tun. Mein Eindruck ist also, dass ich weiterhin Zeit finden und ein bisschen mehr versuchen werde. Es scheint gut, andere Herausforderungen auszuprobieren.

Nachdem ich die Daten für dieses Tutorial etwas detaillierter analysiert hatte, dachte ich, dass sich die Genauigkeit verbessern würde, wenn die folgenden Punkte berücksichtigt würden. Ich werde versuchen, Zeit zu finden.

Das Ende

Recommended Posts

Kaguru zum ersten Mal
Siehe Python zum ersten Mal
Starten Sie Django zum ersten Mal
Ich habe zum ersten Mal Tensorflow ausprobiert
MongoDB mit Python zum ersten Mal
Versuchen wir zum ersten Mal Linux
So verwenden Sie MkDocs zum ersten Mal
Ich habe Mind Meld zum ersten Mal ausprobiert
Versuchen Sie zum ersten Mal, in Qiita zu posten
Ich habe Python zum ersten Mal auf dem Mac ausprobiert.
Ich habe Python zum ersten Mal mit Heroku ausprobiert
Zum ersten Mal habe ich etwas über Unix (Linux) gelernt.
AI Gaming Ich habe es zum ersten Mal versucht
Zusammenfassung der Stolperpunkte in Django zum ersten Mal
Stellen Sie sich zum ersten Mal bei Qiita vor (Testbeitrag)
Ich habe die Google Cloud Vision-API zum ersten Mal ausprobiert
Wenn Sie zum ersten Mal Linux lernen, tun Sie dies!
Erster Python
Qiitas erster Beitrag (der Grund für den Start)
Erster Python
Impressionen und Memorandum bei der ersten Arbeit mit VScode
Zum ersten Mal in Numpy werde ich es von Zeit zu Zeit aktualisieren
Ein nützlicher Hinweis, wenn Sie Python nach langer Zeit verwenden
Da ich frei bin, hat der Front-End-Ingenieur Python (v3.7.5) zum ersten Mal ausprobiert
Importieren Sie sie vorerst in jupyter
Verwenden Sie vorerst Logger mit Python
Führen Sie yolov4 "vorerst" in Windows aus
Ich habe vorerst mit Floydhub gespielt
Versuchen Sie es vorerst mit LINE Notify
virtualenv Das ist vorerst alles!
Das erste GOLD "JDBC"
Die erste GOLD "Funktion"
Rückblick auf den Wettbewerb für maschinelles Lernen, an dem ich zum ersten Mal gearbeitet habe
Lassen Sie uns eine einfache Vorlage anzeigen, die ideal für den ersten Django ist
GTUG Girls + PyLadiesTokyo Meetup Ich ging zum ersten maschinellen Lernen
Flow Memo, um LOCUST vorerst zu verschieben
Führen Sie es vorerst mit CentOS7 + Apache2.4 + Python3.6 aus
[Python] Misst und zeigt die für die Verarbeitung erforderliche Zeit an
Versuchen Sie vorerst, Arch Linux zu installieren.
Neben Excel jupyter Notebook vorerst
Importieren Sie audit.log in Splunk und überprüfen Sie das Verhalten beim ersten Start von Splunk.
Ich besuchte die Schule und nahm zum ersten Mal am SIGNATE BEGINNER Limited-Wettbewerb teil.
Ich möchte zum ersten Mal eine Django-Studie zur Mittagsdatenbank [EP1] erstellen
Ich möchte zum ersten Mal eine Django-Studie zum Mittagessen [EP1-4] erstellen
Für die Prüfung G-Test 2020 # 2
Ich möchte vorerst Selen bewegen [für Mac]
Ich habe vorerst versucht, PIFuHD unter Windows auszuführen
[In kürzester Zeit verstehen] Python-Grundlagen für die Datenanalyse
Einführung in Deep Learning zum ersten Mal (Chainer) Erkennung japanischer Zeichen Kapitel 1 [Umgebungskonstruktion]
[Einführung in die Stärkung des Lernens] Stärkung des Lernens, um sich vorerst zu bewegen
Was ist die Schnittstelle für ...
Was ist ein Hund? Django - Versuchen Sie zum ersten Mal, Form zu verwenden. POST-Übertragungsvolumen
Versuchen Sie vorerst, die Docomo-Chat-Dialog-API zu verwenden
Welche Umgebung sollten Leute, die Python zum ersten Mal lernen, bauen?
Großschreiben Sie nur den ersten Buchstaben
Ich möchte vorerst eine Docker-Datei erstellen.
Code, an den ich mich gerne erinnert hätte, als ich zum ersten Mal an AtCoder teilgenommen habe (Reflection 1 für das nächste Mal)