Aidemy 2020/10/31
Bonjour, c'est Yope! Bien que ce soit un système littéraire croustillant, j'étais intéressé par les possibilités de l'IA, alors je suis allé à l'école spécialisée en IA "Aidemy" pour étudier. Je voudrais partager les connaissances acquises ici avec vous, et je les ai résumées dans Qiita. Je suis très heureux que de nombreuses personnes aient lu l'article de synthèse précédent. Merci! Ceci est le troisième article de "Data Analysis Titanic". Ravi de vous rencontrer.
Quoi apprendre cette fois ・ ⑤ Modélisation, prédiction et solution de problèmes
-Depuis que le traitement des données est terminé au chapitre 2, à partir de là, nous passerons les données au modèle __, ferons une prédiction et effectuerons le processus jusqu'à ce qu'il soit résolu. -D'abord, il est nécessaire de décider __ quel algorithme doit être utilisé pour créer le modèle. Il y a __ "classification" et "retour" __ dans le problème de prédiction. Le premier divise les données en classes et prédit à quelle "classe" les données transmises appartiennent, et le second est la "valeur" des données. Est de prédire. ・ Le problème de prédiction de ce problème Titanic est de «classer» si __Survived est 0 ou 1. L'algorithme à utiliser crée un modèle avec __ "régression logistique" "SVC" "k-NN" "arbre de décision" "forêt aléatoire" __.
-Préparer __ "X_train" "y_train" "X_test" __ à passer au modèle. J'utilise habituellement __train_test_split () __ dans sklearn.model_serection, mais cette fois je l'ai divisé moi-même . -Pour X_train, remplacez train_df autre que Survived, pour y_train, remplacez train_df pour Survived uniquement, et pour X_test, remplacez test_df autre que __PassengerId.
・ Code![Capture d'écran 2020-10-24 18.32.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/57f40d79-e73c-3912- e3be-ea8389d5e6fb.png)
・ (Review) __Régression logistique __ utilise __ la fonction sigmoïde __ pour classer les valeurs binaires La fonction sigmoïde est une fonction __ qui prend une valeur comprise entre __0 et 1. Créez un modèle à l'aide de __LogidticRegression () __. -Cette fois, prédire si la variable objective __Survivé est 0 ou 1 en utilisant les variables explicatives Age et Pclass.
-De plus, en ce qui concerne les données à transmettre au modèle, uniquement pour la régression logistique, __X_train et Y_train sont ensuite divisés en données d'entraînement et données de test dans un rapport de 8: 2 __.
-Code (y compris les résultats)![Capture d'écran 2020-10-24 19.03.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/79db1564 -18c1-c397-80b0-e236333cad58.png)
-__ Pour savoir «Quelle variable explicative (valeur de caractéristique) a tendance à influencer le résultat» _, calculez le __ coefficient de régression partielle __ entre la variable objective et la variable explicative. On peut dire que plus la valeur est élevée, plus il est facile d'influencer le résultat. -Calculer le coefficient de régression partielle avec __ "model.corf" __. Puisque je veux le gérer dans DataFrame, créez un DataFrame qui a des colonnes de train_df dans la ligne ("Feature"), créez un "Coefficient de régression partiel" en tant que nouvelle colonne, et stockez le coefficient de régression partiel là. -La raison pour laquelle delete (0) est défini lors de la création d'un DataFrame est que si 0 apparaît dans le processus de calcul du coefficient de régression partielle, le calcul ne peut pas être effectué et il devient NaN.
・ Code![Capture d'écran 2020-10-24 19.25.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/1cd46828-9fcd-bec9- 0851-275745c732b3.png)
・ Résultat![Capture d'écran 2020-10-24 19.26.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/efd82e96-a574-36ea- 80ac-2bc177a5ed6f.png)
SVM
・ Code (Si vous créez LinearSVC de la même manière, c'est OK. Ce résultat est "83.84")
k-NN
・ Code![Capture d'écran 2020-10-24 19.56.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/04b20121-5e79-cf72- 9d79-4d5c9ce7018d.png)
-Déterminer quel modèle doit être utilisé en listant la précision (acc) __ de chaque __ modèle créé ci-dessus dans DataFrame.
・ Code![Capture d'écran 2020-10-24 21.52.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/5140731d-b25a-73c6- 2b77-0780d617f121.png)
・ Résultat![Capture d'écran 2020-10-24 22.10.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/c7ac0fac-5ba4-f9e3- 3939-cc0a12fe92c1.png)
-Comme vu dans les résultats de la section précédente, il a été constaté que la précision du modèle utilisant __ arbre de détermination et forêt aléatoire est la plus élevée __. Cette fois, j'ai décidé d'utiliser le modèle de forêt __random, qui semble être plus généralisé, et de sauvegarder ce modèle sous forme de fichier csv. -Exporter et enregistrer les fichiers csv peut être fait avec __ "to_csv" __. Dans le fichier, créez un fichier en tant que DataFrame qui a une colonne qui stocke le PassengerId de test_df comme «PassengerId» et une colonne qui stocke le résultat de la prédiction «Y_pred» de la forêt aléatoire (arbre de décision) comme «survécu».
・ Code (le chemin du fichier est fictif)
-Split les données créées jusqu'à la dernière fois dans __train_X, train_y, test_X . Créez un modèle en utilisant ces données. - Pour savoir «quelle variable explicative (valeur de caractéristique) a tendance à influencer le résultat» __, il est préférable de calculer et de visualiser le __ coefficient de régression partielle __. -Comparez quel modèle a la __précision (acc) __ la plus élevée à partir du score de chaque modèle, et enregistrez la __précision (acc) __ la plus élevée dans un fichier csv.
Cette fois, c'est fini. Merci d'avoir lu jusqu'au bout.
Recommended Posts