[PYTHON] Jour 67 [Introduction à Kaggle] Avez-vous essayé d'utiliser Random Forest?

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».


Découpez les données de 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']]

Créez un modèle de prédiction à partir des données d'entraînement.

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

Entraînez-vous avec des données d'entraînement simulées pour créer un modèle prédictif.

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

Vérifiez le score de pseudo-entraînement et le score de pseudo-test.

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éé.

Prédisez les données de test avec le modèle de prédiction 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)

Achevée!

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

Jour 67 [Introduction à Kaggle] Avez-vous essayé d'utiliser Random Forest?
Le jour 68 [Introduction à Kaggle] Random Forest était simple.
J'ai essayé d'utiliser RandomForest
Comment configurer une forêt aléatoire à l'aide d'Optuna
Comment configurer une forêt aléatoire à l'aide d'Optuna
Jour 66 [Introduction à Kaggle] Les prévisions Titanic les plus faciles
[J'ai essayé d'utiliser Pythonista 3] Introduction
Pourquoi vous devez spécifier dtype lors de l'utilisation de keras pad_sequences
Introduction à discord.py (3) Utilisation de la voix
[Introduction à Python3 Jour 1] Programmation et Python
[Introduction à Python3 Jour 13] Chapitre 7 Chaînes de caractères (7.1-7.1.1.1)
[Introduction à Python3 Jour 14] Chapitre 7 Chaînes de caractères (7.1.1.1 à 7.1.1.4)
[Introduction à Python3 Jour 15] Chapitre 7 Chaînes de caractères (7.1.2-7.1.2.2)
[Kaggle] J'ai essayé le sous-échantillonnage en utilisant un apprentissage déséquilibré
[Introduction à Python3 Day 21] Chapitre 10 Système (10.1 à 10.5)
Essayez d'utiliser n pour rétrograder la version de Node.js que vous avez installée
J'ai essayé de visualiser tous les arbres de décision de la forêt aléatoire avec SVG
Introduction à la simulation d'événements discrets à l'aide de Python # 1
[Introduction à Python3, jour 17] Chapitre 8 Destinations de données (8.1-8.2.5)
[Introduction à Python3, jour 17] Chapitre 8 Destinations de données (8.3-8.3.6.1)
"Mentez ... Qu'as-tu fait?"
[Kaggle] J'ai essayé l'apprentissage d'ensemble avec LightGBM
[PyTorch] Introduction à la classification de documents à l'aide de BERT
[Introduction à Python3 Jour 19] Chapitre 8 Destinations de données (8.4-8.5)
J'ai essayé de classer le texte en utilisant TensorFlow
[Introduction à Python3 Day 18] Chapitre 8 Destinations de données (8.3.6.2 à 8.3.6.3)
Introduction à discord.py (1er jour) -Préparation pour discord.py-
Introduction à la simulation d'événements discrets à l'aide de Python # 2
Classification des maladies par Random Forest en utilisant Python
Introduction à Tornado (3): Développement à l'aide de modèles [Pratique]
Kaggle: Introduction à l'ingénierie manuelle des fonctionnalités, partie 1