--Premise: Bien que ce ne soit pas un gros article, je l'ai divisé, mais c'est une continuation de Modélisation.
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.
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)
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.
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)
Créez des données comme celles-ci et soumettez-les à partir de la page Concours. Le résultat était comme ça.
É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.
«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