[PYTHON] Tag 67 [Einführung in Kaggle] Haben Sie versucht, Random Forest zu verwenden?

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.


Schneiden Sie Daten aus 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']]

Erstellen Sie ein Vorhersagemodell aus Trainingsdaten.

-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)

Trainieren Sie mit simulierten Trainingsdaten, um ein Vorhersagemodell zu erstellen.

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)))

Überprüfen Sie den Pseudo-Trainings-Score und den Pseudo-Test-Score.

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.

Prognostizieren Sie die Testdaten mit dem erstellten Vorhersagemodell.

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)

Komplett!

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

Tag 67 [Einführung in Kaggle] Haben Sie versucht, Random Forest zu verwenden?
Tag 68 [Einführung in Kaggle] Random Forest war einfach.
Ich habe versucht, RandomForest zu verwenden
So richten Sie eine zufällige Gesamtstruktur mit Optuna ein
So richten Sie eine zufällige Gesamtstruktur mit Optuna ein
Tag 66 [Einführung in Kaggle] Die einfachste Titanic-Vorhersage
[Ich habe versucht, Pythonista 3 zu verwenden] Einführung
Warum müssen Sie dtype angeben, wenn Sie keras pad_sequences verwenden?
Einführung in discord.py (3) Verwenden von Stimme
[Einführung in Python3 Tag 1] Programmierung und Python
[Einführung in Python3 Tag 13] Kapitel 7 Zeichenfolgen (7.1-7.1.1.1)
[Einführung in Python3 Tag 14] Kapitel 7 Zeichenfolgen (7.1.1.1 bis 7.1.1.4)
[Einführung in Python3 Tag 15] Kapitel 7 Zeichenfolgen (7.1.2-7.1.2.2)
[Kaggle] Ich habe versucht, mit unausgeglichenem Lernen zu unterabtasten
[Einführung in Python3 Tag 21] Kapitel 10 System (10.1 bis 10.5)
Versuchen Sie, mit n die von Ihnen installierte Version von Node.js herunterzustufen
Ich habe versucht, alle Entscheidungsbäume des zufälligen Waldes mit SVG zu visualisieren
Einführung in die diskrete Ereignissimulation mit Python # 1
[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.1-8.2.5)
[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.3-8.3.6.1)
"Lüge ... Was hast du gemacht?"
[Kaggle] Ich habe versucht, Ensemble mit LightGBM zu lernen
[PyTorch] Einführung in die Dokumentklassifizierung mit BERT
[Einführung in Python3 Tag 19] Kapitel 8 Datenziele (8.4-8.5)
Ich habe versucht, Text mit TensorFlow zu klassifizieren
[Einführung in Python3 Tag 18] Kapitel 8 Datenziele (8.3.6.2 bis 8.3.6.3)
Einführung in discord.py (1. Tag) -Preparation for discord.py-
Einführung in die diskrete Ereignissimulation mit Python # 2
Krankheitsklassifizierung durch Random Forest mit Python
Einführung in Tornado (3): Entwicklung mit Vorlagen [Übung]
Kaggle: Einführung in das manuelle Feature Engineering Teil 1