[PYTHON] Prédisons les survivants de Hello World, Titanic de Kaggle par régression logistique-Prédiction / Évaluation-

0. Introduction

--Premise: Bien que ce ne soit pas un gros article, je l'ai divisé, mais c'est une continuation de Modélisation.

4. Prédire

Le modèle créé dans l'article précédent (https://qiita.com/anWest/items/f3d432e0e02f070ec107) utilise des données de test pour prédire s'il a survécu.

4.1. Préparation des données d'essai

Commencez par préparer les données de test. Lors de l'analyse des données réelles, il est nécessaire de séparer les données d'entraînement et les données de test des données d'origine, Puisque Kaggle le divise, téléchargez les données de test (test.csv) depuis la page Compétition.

test_csv = pd.read_csv('../input/titanic/test.csv', sep=',')
test_csv.head()

Au cas où, vérifiez le résumé des données de test.

#Confirmation des dimensions
test_csv.shape
#Résultat de sortie
(418, 11)

#Vérifiez le nombre de données manquantes
test_csv.isnull().sum()
#Résultat de sortie
PassengerId      0
Pclass           0
Name             0
Sex              0
Age             86
SibSp            0
Parch            0
Ticket           0
Fare             1
Cabin          327
Embarked         0
dtype: int64

Il n'y avait aucune valeur manquante pour le tarif dans les données de formation, mais il semble n'y en avoir qu'une dans les données de test. Comme pour l'âge lors de la modélisation, nous remplirons les valeurs manquantes avec la valeur moyenne.

Les données de test seront formatées de la même manière que les données d'entraînement.

#Débarrassez-vous des colonnes inutiles
test = test_csv.drop(['Name', 'SibSp', 'Ticket', 'Cabin'] , axis=1)

#Faire un mannequin féminin
test['Female'] = test['Sex'].map(lambda x: 0 if x == 'male' else 1 ).astype(int)

#Faire un mannequin avec Parch 0 et plus
test['Parch_d'] = test['Parch'].map(lambda x: 0 if x == 0 else 1).astype(int)

#Embarqué fait un mannequin avec S et d'autres
test['Embarked_S'] = test['Embarked'].map(lambda x: 1 if x == 'S' else 0).astype(int)

#Remplissez les valeurs manquantes pour l'âge
test['Age'].fillna(test['Age'].mean(), inplace=True)

#Remplissez les valeurs manquantes dans Fare
test['Fare'].fillna(test['Fare'].mean(), inplace=True)

4.2. Prédire

Faisons maintenant une prédiction en utilisant le modèle que nous avons créé la dernière fois.

#Prédire
predict = model.predict(test_x)
predict[:10]

#Résultat de sortie
array([0, 0, 0, 0, 1, 0, 1, 0, 1, 0])

Notez que la sortie est renvoyée sous la forme d'un tableau de tableaux Numpy.

5. Évaluation

5.1. Soumission des données de résultats prévisionnels

Maintenant, je voudrais vérifier la qualité du modèle créé. Sur Kaggle, lorsque vous soumettez le résultat prévu, Score est renvoyé et évalué par cette valeur. Par conséquent, nous créerons des données à soumettre.

submit_csv = pd.concat([test['PassengerId'], pd.Series(predict)], axis=1)
submit_csv.columns = ['PassengerId', 'Survived']
submit_csv.to_csv('./submition.csv', index=False)

スクリーンショット 2019-12-24 15.30.03.png

Créez des données comme celles-ci et soumettez-les à partir de la page Concours. Le résultat était comme ça. スクリーンショット 2019-12-24 15.31.38.png

5.2. Évaluation des résultats des prévisions

Étant donné que Kaggle n'a pas pu obtenir les données de réponse correctes, je présenterai la précision comme évaluation lorsqu'il y a des données de réponse correctes.

La précision indique dans quelle mesure les résultats de la prédiction correspondent aux données réelles. Précision = (nombre d'échantillons qui pourraient être prédits correctement) / (nombre total d'échantillons) Il est calculé comme suit.

Parmi ceux-ci, le nombre d'échantillons qui peuvent être prédits correctement est que 1 échantillon peut être prédit comme 1 et 0 échantillon peut être prédit comme 0. Supposons que submit_csv contienne les données «'Survived_test'», qui indiquent s'il a survécu ou non.

pd.crosstab(submit_csv['Survived'], submit_csv['Survived_test'])

#Résultat de sortie(supposition)
Survived_test   0   1 
Survived       
   0            a   b
   1            c   d

Le résultat de sortie doit ressembler à celui ci-dessus. Accuracy = a + d / (a + b + c + d) Est requis à.

Il existe d'autres indices d'évaluation pour le modèle, et nous les utiliserons correctement selon l'objectif du modèle.

6. À la fin

«J'ai fait une erreur sur le chemin et modélisé et évalué sans Embarked_S, mais le résultat était meilleur là-bas. «Cette fois, c'est un essai, donc c'est intuitif, mais je l'ai modélisé avec une hypothèse. «La prochaine fois, j'aimerais expliquer la régression logistique.

Recommended Posts

Prédisons les survivants de Hello World, Titanic de Kaggle par régression logistique-Prédiction / Évaluation-
Prédisons les survivants du Hello World de Kaggle, Titanic par régression logistique-Modélisation-
bonjour le monde avec ctypes
Bonjour le monde avec Docker
Bonjour le monde sur flacon
Dessinez bonjour le monde avec mod_wsgi
Bonjour le monde avec Flask + Hamlish
Python commençant par Hello world!
Certains modèles de Kaggle's Titanic (kaggle ④)
Bonjour tout le monde! Avec la communication CAN virtuelle
Prédire le Titanic de Kaggle avec Keras (Kaggle ⑦)
Hello World! Par QPython avec Braincrash
Hello World et détection de visage avec opencv-python 4.2
Bonjour le monde avec Raspberry Pi + Minecraft Pi Edition
J'ai essayé d'apprendre avec le Titanic de Kaggle (kaggle②)
Vérifiez la corrélation avec le Titanic de Kaggle (kaggle③)
Hello World! Par QPython avec Brainfu * k