Python: prévision de survie des navires, partie 1

Prédiction du taux de survie

Détails de l'ensemble de données

Ticket class1 = 1st, 2 = 2nd, 3 = 3rd 1st = Upper, 2nd = Middle, 3rd = Lower

C = Cherbourg, Q = Queenstown, S = Southampton

Flux de travail d'analyse des données

Nous procéderons selon les sept étapes suivantes.

1, questions que vous souhaitez clarifier et définition des problèmes 2, acquisition de données de formation et de test 3, mise en forme des données, création, nettoyage 4, analyse des modèles, identification et analyse des données exploratoires 5, modélisation, prédiction et solution des problèmes 6, visualiser et signaler les étapes de résolution de problèmes et les solutions finales 7, soumission des résultats Le flux ci-dessus est dans l'ordre général, mais il y a des exceptions.

Questions à clarifier et définition des problèmes

Dans des compétitions comme Kaggle, définissez le problème à résoudre Fournit un jeu de données pour entraîner un modèle à résoudre un problème Testez les résultats du modèle par rapport à l'ensemble de données de test. Le problème cette fois est défini comme suit dans Kaggle.

(1) L'ensemble de données de formation reçoit le statut (résultat) indiquant si le passager est «survécu» ou «mort», et cet ensemble de données peut être utilisé pour créer un modèle qui prédit le taux de survie des passagers. ..

(2) Le statut du passager n'est pas donné à l'ensemble de données de test. Vous pouvez prédire la condition des passagers en appliquant le modèle de prédiction de survie ci-dessus à l'ensemble de données de test.

(3) Pour cette tâche, nous allons créer un modèle qui prédit le taux de survie des passagers à partir des données de formation, et appliquer ce modèle aux données de test pour prédire le taux de survie des passagers.

Objectifs du workflow

Le flux de travail d'analyse des données répondra à sept objectifs clés.

① Classer

Classez les données en groupes. Un groupe est une collection de données avec les mêmes propriétés. Si vous vérifiez d'abord le groupe plutôt que de vérifier les données individuellement Vous pouvez réduire le temps nécessaire pour comprendre la nature de vos données.

② Corrélant

Quelle est l'influence de chaque variable sur le résultat (influence-t-elle le résultat)? Découvrez le degré de relation (colinéarité) entre les variables. Les variables sont des données mesurables telles que le nom, l'âge, le sexe et le prix dans cet ensemble de données. Les variables sont également appelées quantités de caractéristiques et sont des facteurs qui influencent les résultats.

③ Conversion

Pour créer un modèle, vous devez transformer les données en fonction du type d'algorithme que vous utilisez. Certains algorithmes n'acceptent que les ensembles de données composés uniquement de nombres Certains ensembles de données avec un mélange de nombres et de valeurs de catégorie (chaînes de caractères) sont également acceptés. Par exemple, dans le premier cas, il est courant de convertir les valeurs de catégorie en valeurs binaires ou à valeurs multiples.

④ Terminer

Dans le processus de conversion des données, si l'ensemble de données contient des valeurs manquantes, il doit être complété de manière appropriée. Par exemple, complétez avec la valeur moyenne de la variable, complétez par 0 (zéro) Par exemple, complétez avec des valeurs avant et après. Une autre option consiste à exclure les variables qui ont trop de valeurs manquantes. La bonne exécution de ces opérations affectera la précision du modèle que vous créez ultérieurement.

⑤ Modifier

Si l'ensemble de données contient des valeurs aberrantes (valeurs aberrantes) dans le processus de conversion des données Vous devez le réparer de la bonne manière. Il peut être corrigé de la même manière que l'achèvement des valeurs manquantes, Si le nombre de valeurs aberrantes est très petit par rapport au nombre de données, vous pouvez exclure les données pertinentes. Une autre option consiste à exclure les variables qui ont trop de valeurs aberrantes. La bonne exécution de ces opérations affectera la précision du modèle que vous créez ultérieurement.

⑥ Création

La création de nouvelles variables à partir de variables existantes ou en combinant des variables existantes est également une méthode efficace. Par exemple, vous pouvez combiner des paires de variables hautement corrélées en une seule. En faisant cela, vous pourrez peut-être réduire le temps nécessaire à la création du modèle.

⑦ Représentation graphique (graphique)

La représentation visuelle à l'aide de graphiques est un moyen efficace d'interpréter efficacement les résultats d'analyse. Il a également le potentiel d'encourager les décisions concernant le problème que vous souhaitez résoudre.

Flux de travail

Acquisition de données d'entraînement et de test

Maintenant, récupérons les données. Tout d'abord, importez les différentes bibliothèques requises. (Si la bibliothèque n'est pas installée, installez-la avec une commande comme celle-ci)

nom du package d'installation pip3
#En premier!Avec les commandes, vous pouvez exécuter des commandes UNIX.

Si le module sklearn n'est pas installé, installez-le comme suit.

pip3 install sklearn

Obtenez des données

La bibliothèque Pandas est utile pour des tâches telles que la conversion de données. Tout d'abord, utilisez cette bibliothèque pour obtenir des ensembles de données d'entraînement et de test au format dataframe.

Pour voir quels types de fichiers existent dans le répertoire (dossier)

Exécutez la commande ls

(Cette fois, je publierai les données que j'ai préparées à titre d'exemple) Avec données d'entraînement. / 8010_titanic_data / train.csv Vous pouvez voir qu'il existe des données de test. / 8010_titanic_data / test.csv. Vous pouvez vérifier les fichiers dans le répertoire courant en exécutant la commande ls.

2010_ml_introduction         README.md
2010_ml_introduction.1       Titanic Analysis Excercise.ipynb
4010_Pandas                  Titanic Analysis.ipynb
4040_data_visualization      titanic_data
4050_data_cleansing          kernel.ipynb
5010_regression              5020_classfication Kaggle

Comprendre la nature des données

Pandas vous aide également à comprendre la nature de vos données. Voici comment convertir / compléter / modifier des données En d'autres termes, il est nécessaire de définir une politique sur l'opportunité d'effectuer un prétraitement.

Quelles fonctionnalités peuvent être utilisées dans l'ensemble de données Quels types de variables (fonctionnalités) existent à l'aide de Pandas Nous allons jeter un coup d'oeil. Pour le distinguer des variables en programmation Ci-après, les variables de l'analyse seront appelées «caractéristiques».

Voici le code à titre d'exemple.

Il est difficile de tout voir, alors regardons les 5 premières lignes et les 5 dernières lignes.

from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = "all"

#1. train_Affiche le montant de la fonctionnalité (= nom de la colonne) de df
print(train_df.columns.values)

#2. train_Sortez les 5 premières lignes de df.
train_df.head(5)

#3. train_Sortie de 5 lignes à partir de la fin de df.
train_df.tail(5)

#4. test_Sortez les 5 premières lignes de df.
test_df.head(5)

#5. test_Sortie de 5 lignes à partir de la fin de df.
test_df.tail(5)

Types de fonctionnalités

Par le travail jusqu'à présent, nous avons confirmé la valeur du montant de la fonctionnalité. Vient ensuite la valeur prise par la quantité de caractéristiques.

Pour la quantité de fonctionnalités

Avec valeur de catégorie (données qualitatives)
Valeur numérique(Des données quantitatives) existent.

image.png

Valeur de la catégorie

Pour la valeur moyenne des données catégorielles

Avec échelle nominale
Échelle ordinaire)il y a.
['PassengerId' ,'Survived' ,'Pclass' ,'Name' ,'Sex' ,'Age' ,'SibSp' ,'Parch','Ticket' ,'Fare' ,'Cabin' ,'Embarked']

Données nominales

Dans cet ensemble de données, les échelles nominales sont Survived, Sex et Emberked.

Ces valeurs sont stockées sous forme de chaînes. Par exemple, s'il s'agit du nom Voici Ware, M. Frederick. Survived s'écrit 1 ou 0 selon la chose À l'origine, il peut être exprimé par Oui ou Non.

Données de commande

Les données de commande sont des données qui indiquent la commande. En termes de ces données Pclass correspond aux données de commande.

Valeur numérique

Il existe deux types de valeurs numériques: les données discrètes et les données continues.

Variable discrète

La variable discrète correspond à SibSp, Parch, etc.

Variable continue

Les données en continu correspondent à l'âge, au tarif, etc.

Comptez le nombre de valeurs manquantes

Chaque quantité d'entités peut contenir des valeurs manquantes. Alors vérifions les valeurs manquantes.

Pour calculer la valeur manquante, utilisez la méthode info.
#1. train_Utilisez la méthode info pour vérifier les valeurs manquantes pour toutes les fonctionnalités de df.
train_df.info()

Quelle quantité de caractéristiques a une valeur manquante

Les données suivantes sont données à titre d'exemple.

train_En df, on sait qu'il y a 891 données (cas) au total.
Autrement dit, les données

Avec Age, qui n'a que 714
Avec seulement 204 cabines
Embarqué avec seulement 889
Les valeurs manquantes sont incluses dans la quantité d'objets.

train_df.info()

PassengerId    891 non-null int64
Survived       891 non-null int64
Pclass         891 non-null int64
Name           891 non-null object
Sex            891 non-null object
Age            714 non-null float64
SibSp          891 non-null int64
Parch          891 non-null int64
Ticket         891 non-null object
Fare           891 non-null float64
Cabin          204 non-null object
Embarked       889 non-null object

En outre, testez_En df, le total est de 418 données

L'âge est 332
Le tarif est 417
Vous pouvez voir que Cabin a 91 ans.

PassengerId    418 non-null int64
Pclass         418 non-null int64
Name           418 non-null object
Sex            418 non-null object
Age            332 non-null float64
SibSp          418 non-null int64
Parch          418 non-null int64
Ticket         418 non-null object
Fare           417 non-null float64
Cabin          91 non-null object
Embarked       418 non-null object

Rechercher les données en double

Pour vérifier les doublons

Utilisez la méthode describe.
train_df.describe()

image.png

Si vous affinez uniquement les données nécessaires

train_df.describe(include=['O'])
#count est le nombre de données (nombre d'observations), unique est le nombre de données sans duplication, top est la valeur la plus contenue et freq est le nombre de valeurs supérieures.
#Par exemple, si vous vous concentrez sur la quantité de caractéristique unique Sexe (sexe), vous pouvez voir qu'elle prend deux valeurs.
#C'est parce que le sexe est masculin (masculin) et féminin (féminin).

image.png

Politique d'analyse des données

À partir de ces données, j'aimerais atteindre les sept objectifs que j'ai mentionnés plus tôt.

corrélation

La quantité de caractéristiques Survived stocke le statut du passager (résultat). Dans quelle mesure d'autres fonctionnalités telles que le sexe et l'âge sont-elles liées à cette fonctionnalité? Enquêter Pour découvrir la relation, regardez la corrélation.

Complément

À partir de variables susceptibles d'affecter les survivants (susceptibles d'avoir une forte relation) Nous prioriserons le stockage des données. Tout d'abord, les données d'âge semblent être liées à Survived Il doit être complété. Embarqué peut également être impliqué.

Réparer

1, Ticket a un taux de duplication élevé (22%), et il peut n'y avoir aucune corrélation entre Ticket et Survived. Les billets peuvent être exclus de l'ensemble de données utilisé pour l'analyse.

2, Cabin est-il très incomplet dans les ensembles de données de formation et de test? Ou il contient de nombreuses valeurs nulles et peut être supprimé.

3, PassengerId prend une valeur unique qui identifie le passager. Cette fonctionnalité ne contribue pas à Survived et peut être supprimée de l'ensemble de données d'entraînement.

4, le nom prend également une valeur unique qui identifie le passager, il peut donc ne pas contribuer à Survived.

Créer

Créez une nouvelle fonctionnalité appelée Famille basée sur Parch et SibSp Vous voudrez peut-être obtenir le nombre total de familles.

Vous pouvez utiliser Nom pour extraire le titre en tant que nouvelle quantité de fonction. Par exemple, des titres tels que Monsieur et Madame peuvent modifier le taux de survie.

Il peut être possible de créer une nouvelle quantité d'entités en divisant l'âge en spécifiant une plage. En effet, il est plus facile de prédire si les données continues sont converties en données discrètes.

Comme Age, Fare peut être en mesure de spécifier une fourchette et de la diviser pour créer une nouvelle quantité de caractéristiques.

Classification

Passons également en revue les données basées sur l'hypothèse du début.

1, la femme (sexe = femme) est probablement vivante (survécu = 1). 2, il est fort possible que l'enfant (âge <?) Était vivant (survécu = 1). 3, les passagers de classe supérieure (Pclass = 1) sont susceptibles de survivre (Survived = 1).

Agréger les quantités d'entités dans un tableau croisé dynamique

Créons un tableau croisé dynamique pour comprendre la corrélation entre les fonctionnalités. Cela ne peut être fait que pour les fonctionnalités qui ne contiennent pas de valeurs manquantes.

De plus, uniquement pour les entités avec des valeurs de catégorie (sexe), d'ordre (Pclass) ou discrètes (SibSp, Parch) Cela a du sens à faire.

#Tout d'abord, créez un tableau croisé dynamique Pclass et Survived.

#1.Créez des tableaux croisés dynamiques Pclass et Survived.
#Pclass est 1-Ce seront des données de commande jusqu'à 3. Calculez la valeur moyenne de Survived en conséquence.
train_df[["Pclass", "Survived"]].groupby(["Pclass"], as_index=False).mean().sort_values(by="Survived", ascending=False)

image.png

#1.Création de tableaux croisés dynamiques Sex and Survived. Le sexe est féminin,Il existe deux données pour les hommes. Calculez la valeur moyenne de Survived en conséquence.
train_df[["Sex", "Survived"]].groupby(["Sex"], as_index=False).mean().sort_values(by="Survived", ascending=False)

image.png

#1.Création de tableaux croisés dynamiques Parch et Survived. Parch vaut 1~Il y a 8 données. Calculez la valeur moyenne de Survived en conséquence.
train_df[["Parch", "Survived"]].groupby(["Parch"], as_index=False).mean().sort_values(by="Survived", ascending=False)

image.png

# 1.Création d'un tableau croisé dynamique pour SibSp et Survived. SibSp est 1~Il y a 8 données. Calculez la valeur moyenne de Survived en conséquence.
train_df[["SibSp", "Survived"]].groupby(['SibSp'], as_index=False).mean().sort_values(by='Survived', ascending=False)

image.png

Cliquez ici pour les matériaux de référence [Résumé du traitement de regroupement / agrégation / conversion dans les pandas Python] (http://sinhrks.hatenablog.com/entry/2014/10/13/005327) [pandas.DataFrame, sort_values, sort_index pour trier les séries] (https://note.nkmk.me/python-pandas-sort-values-sort-index/)

Recommended Posts

Python: prévision de survie de navire, partie 2
Python: prévision de survie des navires, partie 1
Python: prévision de survie des navires, partie 3
QGIS + Python Partie 2
Python: grattage partie 1
Python3 commence la partie 1
Python: grattage, partie 2
Mémorandum de base Python partie 2
Mémo de base Python - Partie 2
Mémo de base Python - Partie 1
Traitement d'image avec Python (partie 2)
Etudier Python avec freeCodeCamp part1
Application Python: Pandas Partie 1: Basique
Application Python: Pandas Partie 2: Série
Grattage avec Selenium + Python Partie 1
Python: Apprentissage supervisé: Hyper Paramètres Partie 1
Etudier Python avec freeCodeCamp part2
Traitement d'image avec Python (partie 1)
Résolution de Nampre avec Python (partie 2)
Traitement d'image avec Python (3)
Python: prévision du cours de l'action, partie 2
UI Automation Partie 2 en Python
Python: apprentissage supervisé: Hyper Paramètre partie 2
Grattage avec Selenium + Python Partie 2
Principes de base de Python x SIG (1)
Python: prévision du cours de l'action partie 1
Translocation de fichiers CSV avec Python Partie 1
objet perl et classe python partie 2.
Application de Python: Nettoyage des données Partie 1: Notation Python
[Automatisé avec python! ] Partie 1: fichier de configuration
Application Python: Traitement des données # 3: Format des données
Introduction à Python Hands On Partie 1
Etudier Python Part.1 Créer un environnement
Application Python: Numpy Partie 3: Double tableau
Principes de base de Python x SIG (partie 2)
objet perl et classe python partie 1.
Automatisez des tâches simples avec Python Part0
Application Python: visualisation de données partie 1: basique
[Automatisé avec python! ] Partie 2: Fonctionnement des fichiers