Kaggles Titanic-Vermutung. Letztes Mal habe ich "All Survival Model" und "Gender Based Model" (männlicher Tod / weibliches Überleben) gemacht. Tag 66 [Einführung in Kaggle] Die einfachste Titanic-Vorhersage
Diesmal war es maschinelles Lernen, also habe ich versucht, einen zufälligen Wald zu verwenden. Klicken Sie hier für die Originalgeschichte. Das beliebteste Rezept auf Kaggles Notizbuch. Titanic Data Science Solutions
Da es in Englisch geschrieben ist, werde ich vorerst einen kurzen Blick von oben nach unten werfen. Zusammenfassend scheint Random Forest am einfachsten zu verwenden zu sein.
Ich habe sofort versucht, es basierend auf dem vorherigen "Gender Based Model" auszuführen.
train.csv
und test.csv
aus.Dieser Bereich ist der gleiche wie beim letzten Mal.
11.py
import pandas as pd
#Laden Sie CSV mit Pandas
train_df = pd.read_csv('train.csv')
test_df = pd.read_csv('test.csv')
#Geschlecht in männlich umwandeln 0 weiblich 1
train_df.replace({'Sex': {'male': 0, 'female': 1}}, inplace=True)
test_df.replace({'Sex': {'male': 0, 'female': 1}}, inplace=True)
#Erstellen Sie einen Datenrahmen
train_df = train_df.loc[:,['PassengerId','Survived','Sex']]
test_df = test_df.loc[:,['PassengerId','Sex']]
-Die Trainingsdaten train.csv
sind vertikal in die erklärende Variable (x) und die Zielvariable (y) unterteilt.
Außerdem ist es horizontal in Pseudo-Trainingsdaten (X_train, y_train) und Pseudo-Testdaten ((X_valid, y_valid) unterteilt.
12.py
#Erstellen eines Basismodells
#Datenaufteilungsmodul importieren
from sklearn.model_selection import train_test_split
#Schneiden Sie die Trainingsdaten aus den Originaldaten aus.Anzahl in Werten.In ndarray-Typ konvertieren
X = train_df.iloc[:, 2:].values #Faktoren, die verursachen
y = train_df.iloc[:, 1].values #Ergebnis
#Testdaten
X_test = test_df.iloc[:, 1:].values #Faktoren, die verursachen
#Teilen Sie die Trainingsdaten, um ein Vorhersagemodell zu erstellen
#Scikit für die Datenpartitionierung-Zug lernen_test_Verwenden Sie die Split-Funktion
#Zufällige Division Setzen Sie den Startwert auf 42 (gemäß Galactic Hitchhike Guide).
X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.3, random_state=42)
Vorhersage von Pseudotestdaten mit einem Vorhersagemodell. Je näher die resultierende Punktzahl ist, desto besser ist das Vorhersagemodell. Wenn der Trainingsdatenwert für Übertraining zu gut oder für Untertraining zu niedrig ist, überprüfen Sie das Vorhersagemodell.
13.py
#Erstellen Sie ein Vorhersagemodell in einer zufälligen Gesamtstruktur
from sklearn.ensemble import RandomForestClassifier
#Lernen Sie Pseudo-Trainingsdaten und erstellen Sie ein Vorhersagemodell.
rfc = RandomForestClassifier(n_estimators=100)
rfc.fit(X_train, y_train)
#Pseudo-Trainingsdaten X._train, y_train)Zeigen Sie die Partitur von
print('Train Score: {}'.format(round(rfc.score(X_train, y_train), 3)))
#Pseudo-Testdaten(X_valid, y_valid)Zeigen Sie die Partitur von
print(' Test Score: {}'.format(round(rfc.score(X_valid, y_valid), 3)))
Train Score: 0.785 Test Score: 0.791
Das Ergebnis dieser Zeit ist ... Ist es okay, wie ist es? Den Menschen fehlt es an Lernen. Lassen Sie uns jedenfalls vorhersagen, dass das Modell erstellt wurde.
14.py
#Vorhersagemodell erstellt( rfc.predict)Testdaten in(X_test)Vorhersagen
y_pred = rfc.predict(X_test)
#Konvertieren Sie das Ergebnis in einen Pandas-Datenrahmen.
submission = pd.DataFrame({
"PassengerId": test_df["PassengerId"],
"Survived": y_pred
})
#Ausgabe an CSV.
submission.to_csv('titanic1-2.csv', index=False)
Ich werde es sofort auf Kaggle hochladen.
Public Score:0.76555
???
Dies ist das gleiche Ergebnis wie beim vorherigen Überlebensmodell für Frauen mit männlichem Tod. Als ich die CSV-Datei überprüfte, war es sicherlich genau das gleiche. Mit Blick auf die Originaldaten train.csv liegt die Überlebensrate von Frauen bei 75% und die von Männern bei 18%. Das lag also nicht daran, dass ich dachte, dass es unterschiedliche Vorhersagen geben würde.
Das Vorhersagemodell basiert auf mehr als 600 Daten, was einer 7: 3-Aufteilung von 890 train.csv entspricht. Es kann nicht genug sein, um vorherzusagen. Alternativ kann die zufällige Gesamtstruktur möglicherweise keine mehrdeutigen Vorhersagen treffen, oder sie ist irgendwo falsch codiert.
Ich bin mir in diesem Bereich nicht sicher, also werde ich es auf Eis legen.
Recommended Posts