[PYTHON] Lassen Sie uns die Überlebenden von Kaggles Hello World, Titanic durch logistische Regression vorhersagen - Vorhersage / Bewertung

0. Einleitung

--Premise: Obwohl es kein großer Artikel ist, habe ich ihn geteilt, aber es ist eine Fortsetzung von Modellierung.

4. Vorhersagen

Das im vorherigen Artikel erstellte Modell (https://qiita.com/anWest/items/f3d432e0e02f070ec107) verwendet Testdaten, um vorherzusagen, ob es überlebt hat.

4.1 Vorbereitung der Testdaten

Bereiten Sie zunächst die Testdaten vor. Bei der Analyse der tatsächlichen Daten müssen die Trainingsdaten und die Testdaten von den Originaldaten getrennt werden. Da Kaggle es teilt, laden Sie die Testdaten (test.csv) von der Wettbewerbsseite herunter.

test_csv = pd.read_csv('../input/titanic/test.csv', sep=',')
test_csv.head()

Überprüfen Sie für alle Fälle die Zusammenfassung der Testdaten.

#Bestätigung der Abmessungen
test_csv.shape
#Ausgabeergebnis
(418, 11)

#Überprüfen Sie die Anzahl der fehlenden Daten
test_csv.isnull().sum()
#Ausgabeergebnis
PassengerId      0
Pclass           0
Name             0
Sex              0
Age             86
SibSp            0
Parch            0
Ticket           0
Fare             1
Cabin          327
Embarked         0
dtype: int64

In den Trainingsdaten fehlten keine Tarifwerte, aber in den Testdaten scheint es nur einen zu geben. Wie beim Alter beim Modellieren werden die fehlenden Werte mit dem Durchschnittswert gefüllt.

Die Testdaten werden wie die Trainingsdaten formatiert.

#Entfernen Sie unnötige Spalten
test = test_csv.drop(['Name', 'SibSp', 'Ticket', 'Cabin'] , axis=1)

#Machen Sie eine weibliche Puppe
test['Female'] = test['Sex'].map(lambda x: 0 if x == 'male' else 1 ).astype(int)

#Machen Sie einen Dummy mit Parch 0 und höher
test['Parch_d'] = test['Parch'].map(lambda x: 0 if x == 0 else 1).astype(int)

#Eingeschifft macht ein Dummy mit S und anderen
test['Embarked_S'] = test['Embarked'].map(lambda x: 1 if x == 'S' else 0).astype(int)

#Geben Sie fehlende Werte für Alter ein
test['Age'].fillna(test['Age'].mean(), inplace=True)

#Geben Sie fehlende Werte in Tarif ein
test['Fare'].fillna(test['Fare'].mean(), inplace=True)

4.2. Vorhersagen

Lassen Sie uns nun eine Vorhersage mit dem Modell machen, das wir zuletzt erstellt haben.

#Vorhersagen
predict = model.predict(test_x)
predict[:10]

#Ausgabeergebnis
array([0, 0, 0, 0, 1, 0, 1, 0, 1, 0])

Beachten Sie, dass die Ausgabe als Array von Numpy-Arrays zurückgegeben wird.

5. Bewertung

5.1. Übermittlung von Prognoseergebnisdaten

Jetzt möchte ich überprüfen, wie gut das erstellte Modell ist. Wenn Sie bei Kaggle das vorhergesagte Ergebnis übermitteln, wird die Punktzahl zurückgegeben und anhand dieses Werts bewertet. Daher erstellen wir Daten zur Einreichung.

submit_csv = pd.concat([test['PassengerId'], pd.Series(predict)], axis=1)
submit_csv.columns = ['PassengerId', 'Survived']
submit_csv.to_csv('./submition.csv', index=False)

スクリーンショット 2019-12-24 15.30.03.png

Erstellen Sie solche Daten und senden Sie sie von der Wettbewerbsseite. Das Ergebnis war so. スクリーンショット 2019-12-24 15.31.38.png

5.2 Auswertung der Vorhersageergebnisse

Da Kaggle nicht die richtigen Antwortdaten erhalten konnte, werde ich die Genauigkeit als Bewertung einführen, wenn die richtigen Antwortdaten vorliegen.

Die Genauigkeit gibt an, wie gut die Vorhersageergebnisse mit den tatsächlichen Daten übereinstimmen. Genauigkeit = (Anzahl der Proben, die korrekt vorhergesagt werden konnten) / (Gesamtzahl der Proben) Es wird berechnet als.

Von diesen ist die Anzahl von Proben, die korrekt vorhergesagt werden können, dass 1 Probe als 1 vorhergesagt werden kann und 0 Probe als 0 vorhergesagt werden kann. Nehmen wir an, dass submit_csv die Daten von "Survived_test" enthält, die angeben, ob es tatsächlich überlebt hat oder nicht.

pd.crosstab(submit_csv['Survived'], submit_csv['Survived_test'])

#Ausgabeergebnis(Annahme)
Survived_test   0   1 
Survived       
   0            a   b
   1            c   d

Das Ausgabeergebnis sollte wie oben aussehen. Accuracy = a + d / (a + b + c + d) Wird benötigt bei.

Es gibt andere Bewertungsindizes für das Modell, und wir werden sie entsprechend dem Zweck des Modells ordnungsgemäß verwenden.

6. Am Ende

――Ich habe auf dem Weg einen Fehler gemacht und ohne Embarked_S modelliert und ausgewertet, aber das Ergebnis war dort besser. ――Dieses Mal ist es ein Versuch, also intuitiv, aber ich habe ihn mit einer Hypothese modelliert. ――Nächstes Mal möchte ich die logistische Regression erklären.

Recommended Posts

Lassen Sie uns die Überlebenden von Kaggles Hello World, Titanic durch logistische Regression vorhersagen - Vorhersage / Bewertung
Lassen Sie uns die Überlebenden von Kaggles Hello World, Titanic, durch logistische Regression vorhersagen.
Hallo Welt mit ctypes
Hallo, Welt mit Docker
Hallo Welt auf Flasche
Zeichne Hallo Welt mit mod_wsgi
Hallo Welt mit Flask + Hamlish
Python beginnend mit Hallo Welt!
Wählen Sie Modelle von Kaggles Titanic (kaggle ④)
Hallo Welt! Mit virtueller CAN-Kommunikation
Vorhersage der Titanic von Kaggle mit Keras (kaggle ⑦)
Hallo Welt! Von QPython mit Braincrash
Hallo Welt- und Gesichtserkennung mit opencv-python 4.2
Hallo Welt mit Raspberry Pi + Minecraft Pi Edition
Ich habe versucht, mit Kaggles Titanic (kaggle②) zu lernen.
Überprüfen Sie die Korrelation mit Kaggles Titanic (kaggle③)
Hallo Welt! Von QPython mit Brainfu * k