La conjecture Titanic de Kaggle. La dernière fois, j'ai créé «All Survival Model» et «Gender Based Model» (mort masculine / survie féminine). Jour 66 [Introduction à Kaggle] Les prévisions Titanic les plus faciles
Cette fois, c'était l'apprentissage automatique, alors j'ai essayé d'utiliser une forêt aléatoire. Cliquez ici pour l'histoire originale. La recette la plus populaire sur le cahier de Kaggle. Titanic Data Science Solutions
Puisqu'il est écrit en anglais, je vais pour le moment jeter un coup d'œil de haut en bas. En conclusion, Random Forest semble être le plus simple à utiliser.
J'ai immédiatement essayé de l'exécuter en me basant sur le précédent «Modèle basé sur le genre».
train.csv
et test.csv
.Cette zone est la même que la dernière fois.
11.py
import pandas as pd
#Charger le CSV avec les pandas
train_df = pd.read_csv('train.csv')
test_df = pd.read_csv('test.csv')
#Convertir le sexe en homme 0 femme 1
train_df.replace({'Sex': {'male': 0, 'female': 1}}, inplace=True)
test_df.replace({'Sex': {'male': 0, 'female': 1}}, inplace=True)
#Créer un Dataframe
train_df = train_df.loc[:,['PassengerId','Survived','Sex']]
test_df = test_df.loc[:,['PassengerId','Sex']]
-Les données d'apprentissage train.csv
sont divisées verticalement en la variable explicative (x) et la variable objectif (y).
-De plus, il est divisé horizontalement en pseudo données d'entraînement (X_train, y_train) et pseudo-test data ((X_valid, y_valid).
12.py
#Création d'un modèle de base
#Importer le module de fractionnement de données
from sklearn.model_selection import train_test_split
#Supprimez les données d'entraînement des données d'origine.numpy dans les valeurs.Convertir en type ndarray
X = train_df.iloc[:, 2:].values #Les facteurs qui causent
y = train_df.iloc[:, 1].values #résultat
#données de test
X_test = test_df.iloc[:, 1:].values #Les facteurs qui causent
#Divisez les données d'entraînement pour créer un modèle de prédiction
#Scikit pour le partitionnement des données-apprendre le train_test_Utiliser la fonction de fractionnement
#Division aléatoire Définir la valeur de départ sur 42 (selon le guide Galactic Hitchhike)
X_train, X_valid, y_train, y_valid = train_test_split(X, y, test_size=0.3, random_state=42)
Prédire les données de pseudo-test avec un modèle de prédiction. Plus le score obtenu est proche, meilleur est le modèle de prédiction. Si le score des données d'entraînement est trop bon pour le surentraînement ou trop bas pour le sous-entraînement, examinez le modèle de prédiction.
13.py
#Créer un modèle prédictif dans une forêt aléatoire
from sklearn.ensemble import RandomForestClassifier
#Apprenez les données de pseudo-entraînement et créez un modèle de prédiction.
rfc = RandomForestClassifier(n_estimators=100)
rfc.fit(X_train, y_train)
#Pseudo-données d'entraînement X_train, y_train)Voir le score de
print('Train Score: {}'.format(round(rfc.score(X_train, y_train), 3)))
#Données de pseudo-test(X_valid, y_valid)Voir le score de
print(' Test Score: {}'.format(round(rfc.score(X_valid, y_valid), 3)))
Train Score: 0.785 Test Score: 0.791
Le résultat de cette fois est ... Est-ce que ça va, comment ça va? Les humains manquent d'apprentissage. Quoi qu'il en soit, prévoyons que le modèle a été créé.
14.py
#Modèle de prédiction créé( rfc.predict)Tester les données dans(X_test)Prédire
y_pred = rfc.predict(X_test)
#Convertissez le résultat en une trame de données Pandas.
submission = pd.DataFrame({
"PassengerId": test_df["PassengerId"],
"Survived": y_pred
})
#Sortie au format CSV.
submission.to_csv('titanic1-2.csv', index=False)
Je vais le télécharger sur Kaggle immédiatement.
Public Score:0.76555
???
C'est le même résultat que le modèle précédent de survie des femmes mortes masculines. Quand j'ai vérifié le fichier CSV, c'était certainement exactement la même chose. En regardant les données d'origine train.csv, le taux de survie des femmes est de 75% et celui des hommes est de 18%, donc ce n'était pas parce que je pensais qu'il y aurait des prédictions différentes.
Le modèle de prédiction était basé sur plus de 600 données de 890 train.csv divisées en 7: 3. Il ne suffit peut-être pas de prévoir. Alternativement, la forêt aléatoire peut ne pas être bonne pour faire des prédictions ambiguës, ou peut-être qu'elle est mal codée quelque part.
Je ne suis pas sûr de ce domaine, alors je vais le mettre en attente.
Recommended Posts